Gibt es ein Äquivalent von ==
aber mit dem Ergebnis, dass x != NA
wenn x
nicht NA
?R Gleichheit während NAs ignorieren
Die folgende tut, was ich will, aber es ist klobig:
mapply(identical, vec1, vec2)
Gibt es ein Äquivalent von ==
aber mit dem Ergebnis, dass x != NA
wenn x
nicht NA
?R Gleichheit während NAs ignorieren
Die folgende tut, was ich will, aber es ist klobig:
mapply(identical, vec1, vec2)
1 == NA
eine logische NA
statt TRUE
oder FALSE
zurückgibt. Wenn Sie NA
FALSE
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.
Es ist irgendwie nervig, ein AND zu machen, aber ich denke, wenn es keinen besseren Weg gibt. – Xodarap
Wie? Was würden Sie stattdessen vorschlagen? "NA" verhält sich aus sehr wichtigen Gründen besonders (so auch "NULL")! – Justin
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