2016-08-05 81 views
0

我想filter所有NA。我认为这会工作,但它给了我一个空表,而不是我的预期:如何保留所有NA?

data_frame(var=c(sample(letters[1:2],8,replace=8),NA,NA), 
      value=rnorm(10,10,2)) %>% 
      filter(var==is.na(var)) 
#EXPECTED 
# var  value 
# <chr>  <dbl> 
# 1 <NA> 9.119849 
# 2 <NA> 13.236334 
+0

NA NA ==的讨论在这里... http://stackoverflow.com/questions/25100974/na-matches-na-but-is-not-equal-to-na-why – cory

回答

1

我们只需要is.nafilter,而不是==

d1 %>% 
    filter(is.na(var)) 
# var value 
# <chr> <dbl> 
#1 <NA> 9.119849 
#2 <NA> 13.236334 

其中“D1”是data_frame

1

如果var是NA,那么is.na(var)将为TRUE。所以在这种情况下var == is.na(var)是:NA == TRUE。这不是真实的陈述,所以它不通过过滤器。我会让你考虑其他情况,但我只是认为你的过滤器没有做你认为正在做的事情。

相关问题