2016-08-05 17 views
0

Ich versuche filter alle NA. Ich dachte, dies funktionieren würde, aber es gibt mir eine leere Tabelle eher als das, was ich erwartet hatte:Wie alle NA behalten?

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

Eine Diskussion von NA == NA ist hier ... http://stackoverflow.com/questions/25100974/na-matches-na-but-is-not-equal-to-na-why – cory

Antwort

1

Wir brauchen nur is.na innen filter und nicht ==

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

wo ‚d1‘ die data_frame

ist
1

Wenn var NA ist, dann ist is.na (var) WAHR. In diesem Fall ist also var == is.na (var): NA == TRUE. Das ist keine wahre Aussage, so dass es den Filter nicht passiert. Ich werde dich über die anderen Fälle nachdenken lassen, aber ich denke nur, dass dein Filter nicht tut, was du denkst, dass er tut.