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

时间:2019-02-25 18:58:50

标签: r

我有一个数据帧df,其变量为x。但是,检查NA的两个不同表达式给我不同的结果。谁能解释?

sum(is.na(df$x)
#[1] 41

df %>% filter(x==NA)
#A tibble: 0 x 1`

1 个答案:

答案 0 :(得分:0)

请注意,通过NA==进行比较(几乎)总是得出NA。这很容易证明:

x <- c(1, 2, NA, 4)
x == NA
#[1] NA NA NA NA

请参见help("NA")help("==")。从后面的文档中:

  

缺少值(NANaN的值甚至与它们自己也无法比较,因此涉及它们的比较将始终产生NA

因此您的dplyr代码应为:

df %>% filter(is.na(x))