我在一个看似简单的任务中遇到了一些问题:使用dplyr删除all个变量为NA
的所有行.我知道可以使用base R(Remove rows in R matrix where all data is NA和Removing empty rows of a data file in R)完成,但我很好奇,是否有一种使用dplyr的简单方法.
例子:
library(tidyverse)
dat <- tibble(a = c(1, 2, NA), b = c(1, NA, NA), c = c(2, NA, NA))
filter(dat, !is.na(a) | !is.na(b) | !is.na(c))
上面的filter
次调用符合我的要求,但在我面临的情况下是不可行的(因为有大量变量).我想可以使用filter_
,首先用(长)逻辑语句创建一个字符串,但似乎应该有一种更简单的方法.
另一种方法是使用rowwise()
和do()
:
na <- dat %>%
rowwise() %>%
do(tibble(na = !all(is.na(.)))) %>%
.$na
filter(dat, na)
但这看起来不太好,尽管它完成了任务.还有其他 idea 吗?