我想从数据集中删除全部为 NA 的行(也称为保留具有任何非 NA 的行)作为列列表。我如何更新此代码以便x&y作为向量提供?这将使我能够灵活地添加和删除列以进行检查。
library(dplyr)
ds <-
tibble(
id = c(1:4),
x = c(NA, 1, NA, 4),
y = c(NA, NA , 3, 4)
)
ds %>%
rowwise() %>%
filter(
any(
!is.na(x),
!is.na(y)
)
) %>%
ungroup()
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写类似的内容any(!is.na(c(x,y))),但我不确定如何向is.na().
我们可以filter_at使用any_vars
ds %>% \n filter_at(vars(x:y), any_vars(!is.na(.)))\n# A tibble: 3 x 3\n# id x y\n# <int> <dbl> <dbl>\n#1 2 1 NA\n#2 3 NA 3\n#3 4 4 4\nRun Code Online (Sandbox Code Playgroud)\n-更新 - 2022 年 2 月 7 日
\n在新版本中dplyr(如@GitHunter0建议)可以使用if_all/if_any或across
ds %>%\n filter(if_any(x:y, complete.cases))\n# A tibble: 3 \xc3\x97 3\n id x y\n <int> <dbl> <dbl>\n1 2 1 NA\n2 3 NA 3\n3 4 4 4\nRun Code Online (Sandbox Code Playgroud)\n