首页 > 解决方案 > R 中 !is.na() 的 filter_all 仍然会产生缺失值

问题描述

我正在尝试使用 dplyr 的 filter_all() 来生成所有没有丢失数据的行。我正在使用 dplyr 内置的星球大战数据集。当我使用此代码生成确实有任何缺失值的代码时,它可以无缝运行:

 library(dplyr)
 data("starwars")

rows_with_NAs <- starwars %>%
  filter_all(any_vars(is.na(.)))

但是,如果我尝试使用此代码查找没有任何缺失值的行:

rows_without_NAs <- starwars %>%
  filter_all(any_vars(!is.na(.)))

我仍然得到带有 NA 的行。

head(rows_without_NAs)

为什么会这样,我该如何解决?

谢谢!

标签: rfilterdplyrfilteringna

解决方案


tidyr有此drop_na()操作员。

library(tidyverse)

data("starwars")

rows_without_NAs <- starwars %>%
    drop_na()

推荐阅读