Compare a value to null. Why is this true? Compare a value to null. Why is this true? r r

Compare a value to null. Why is this true?


As @Roland pointed out, we can't perform any logical operations directly on NULL object. To compare them we might need to perform an additional check of is.null and then perform the logical comparison.

We can use identical instead to compare values which handles integers as well as NULL.

identical(4, 2) #FALSEidentical(NULL, 2) #FALSEidentical(2, 2) #TRUE


In order to answer the why part of your question:

Comparing NULL with other types will give you logical(0) (i.e., a logical vector of length zero). So,

isTRUE(NULL != 2)

actually is

isTRUE(logical(0))

which is FALSE.

In order to compare the values where you might have NULL values also, you could also do something like this (using short circuit logical operator):

a <- 2b <- 2!is.null(a) && !is.null(b) && a==b#[1] TRUEa <- 3b <- 2!is.null(a) && !is.null(b) && a==b#[1] FALSEa <- 2b <- NULL!is.null(a) && !is.null(b) && a==b#[1] FALSE