Esiste un equivalente di ==
ma con il risultato che x != NA
se non è NA
?R Uguaglianza ignorando NAs
Di seguito fa quello che voglio, ma è goffa:
mapply(identical, vec1, vec2)
Esiste un equivalente di ==
ma con il risultato che x != NA
se non è NA
?R Uguaglianza ignorando NAs
Di seguito fa quello che voglio, ma è goffa:
mapply(identical, vec1, vec2)
1 == NA
restituisce una logica NA
piuttosto che TRUE
o FALSE
. Se si desidera chiamare NA
FALSE
, si potrebbe aggiungere un secondo condizionale:
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
Si potrebbe anche usare una seconda fase di lavorazione per convertire tutti i valori NA
dal test di uguaglianza a FALSE
.
foo <- x <= y
foo[is.na(foo)] <- FALSE
foo
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
Inoltre, per quello che il suo valore, NA == NA
rendimenti NA
come fa NA != NA
.
È un po 'fastidioso dover fare un AND, ma suppongo che non ci sia modo migliore. – Xodarap
Come mai? Cosa vorresti invece proporre? 'NA' si comporta in un modo speciale (quindi' NULL') per ragioni molto importanti! – Justin
Mi rendo conto che il comportamento di '==' è prezioso, ma vorrei che ci fosse un operatore '== '' che si comportava come volevo. (R non consente gli operatori definiti dall'utente, giusto?) – Xodarap