2013-01-23 18 views

cevap

5

1 == NA mantıksal NA yerine TRUE veya FALSE döndürür. Eğer NAFALSE aramak isterseniz, ikinci koşullu ekleyebilirsiniz:

set.seed(1) 
x <- 1:10 
x[4] <- NA 
y <- sample(1:10, 10) 

x <= y 
# [1] TRUE TRUE TRUE NA FALSE TRUE TRUE FALSE TRUE FALSE 

x <= y & !is.na(x) 
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE 

Ayrıca FALSE için eşitlik testinden tüm NA değerlerini dönüştürmek için ikinci bir işlem adımını kullanabilirsiniz. Ayrıca

foo <- x <= y 
foo[is.na(foo)] <- FALSE 
foo 
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE 

, ne için onun değerinde, NA == NA döner NANA != NA yaptığı gibi.

+0

Biraz can sıkıcı bir AND yapmak zorunda kalmak, ama iyi bir yol olup olmadığını sanırım. – Xodarap

+0

Ne kadar? Bunun yerine ne önerirsin? 'NA', çok önemli nedenlerle özel bir şekilde (yani NULL'de) davranır! – Justin

+0

'==' nin davranışının değerli olduğunu anlıyorum ama keşke ben de istediğim gibi davranan bir operatör olsaydım. (R, doğru kullanıcı tanımlı operatörler izin vermez?) – Xodarap