2013-01-23 12 views

Antwort

5

1 == NA eine logische NA statt TRUE oder FALSE zurückgibt. Wenn Sie NAFALSE anrufen möchten, können Sie eine zweite bedingte hinzuzufügen:

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 

Sie könnten auch einen zweiten Verarbeitungsschritt verwenden, um alle NA Werte aus Gleichheitstest zu FALSE zu konvertieren.

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

Auch für das, was ihren Wert, NA == NA kehrt NA als NA != NA tut.

+0

Es ist irgendwie nervig, ein AND zu machen, aber ich denke, wenn es keinen besseren Weg gibt. – Xodarap

+0

Wie? Was würden Sie stattdessen vorschlagen? "NA" verhält sich aus sehr wichtigen Gründen besonders (so auch "NULL")! – Justin

+0

Ich weiß, dass das Verhalten von '==' wertvoll ist, aber ich wünschte, es gäbe einen Operator '= ', der sich so verhalten hat, wie ich es möchte. (R erlaubt keine benutzerdefinierten Operatoren, richtig?) – Xodarap

Verwandte Themen