sum(is.na(df$x) 给了我一个与 dplyr df%>%filter(x==NA) 不同的答案



我有一个带有变量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))

最新更新