[R] NA treatment when comparing two vectors

fabien verger fabien.verger at gmail.com
Tue Oct 4 18:51:16 CEST 2016


Hello,

I want to get the differences when comparing 2 vectors, by pair (element by
element).
I'd like to get TRUEs when:
- the two compared elements are different and non-missing (like `!=` does)
- one element is missing and the other is not missing (unfortunatelly `!=`
gives NA and not TRUE)
Note that I don't want to get TRUEs when both are missing. NA or FALSE are
fine.

Given a and b:
> a <- c(1, 2, 3,  NA, NA)
> b <- c(1, 9, NA, 4 , NA)

The only solution I found is:

> a != b | (is.na(a) != is.na(b))
[1] FALSE  TRUE  TRUE  TRUE    NA

Is there a single function which can do the same?
I searched for other comparison tools but found nothing relevant.

And I would like also to avoid using `!=` because I'm often comparing
floating numbers computed by different algorithms (so rounded differently).

I found identical() interesting (for exemple, !(identical(NA, 99)) gives
TRUE) but the result of !(identical(a, b) is a single logical, not a vector
of logicals.

Many thanks in advance for your help.
P.S. I am new to R, coming from SAS. Actually, I'm looking for the R
function that replicates the SAS instruction: if a ^= b;

	[[alternative HTML version deleted]]



More information about the R-help mailing list