我有一个带有变量x
的数据框架df
。但是,检查NA
的两个不同表达式给我不同的结果。谁能解释?
sum(is.na(df$x)
#[1] 41
df %>% filter(x==NA)
#A tibble: 0 x 1`
请注意,通过==
(几乎)与NA
进行比较总是评估为NA
。很容易证明:
x <- c(1, 2, NA, 4)
x == NA
#[1] NA NA NA NA
参见help("NA")
和help("==")
。从后一个文档中:
缺失值(
NA
)和NaN
值甚至对自己也被认为是不可分配的,因此涉及它们的比较将始终导致NA
。
因此您的dplyr
代码应为:
df %>% filter(is.na(x))