Why is
isTRUE(NULL != 2)
[1] FALSE
And how would I receive TRUE?
In my real case I have variables and I want to process something,
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 <- 2
b <- 2
!is.null(a) && !is.null(b) && a==b
#[1] TRUE
a <- 3
b <- 2
!is.null(a) && !is.null(b) && a==b
#[1] FALSE
a <- 2
b <- NULL
!is.null(a) && !is.null(b) && a==b
#[1] FALSE
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)
#FALSE
identical(NULL, 2)
#FALSE
identical(2, 2)
#TRUE