为什么在dplyr中使用!=进行过滤(在data.table中相同)会删除带NA的行

时间:2016-05-26 03:00:17

标签: r database dplyr

library(dplyr)
dt <- data.frame(A=c(1,2), B=c(NA,5))
tbl_df(dt) %>% filter(A!=B)

我可以得知它无法比较&gt; pr&lt ;.但是,除了其他NA之外,认为NA不等于其他值,这更直观。有没有解决这个问题?

1 个答案:

答案 0 :(得分:0)

一种选择是使用is.na

创建另一个条件
tbl_df(dt) %>% 
      filter(A!=B| rowSums(is.na(.))>0)
#      A     B
#  <dbl> <dbl>
#1     1    NA
#2     2     5

如果我们查看比较的输出

with(dt, A!=B)
#[1]   NA TRUE

第一个返回NA,因为与NA的任何比较都会返回NA