2016-08-05 82 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。這不是真實的陳述,所以它不通過過濾器。我會讓你考慮其他情況,但我只是認爲你的過濾器沒有做你認爲正在做的事情。

相關問題