为什么
isTRUE(NULL != 2)
[1] FALSE
我将如何获得TRUE?
在我的实际案例中,我有变量,如果值不同,我想处理一些事情。但是,当一个值为NULL时,我不认为它们是不同的!
答案 0 :(得分:10)
正如@Roland指出的那样,我们无法直接在NULL
对象上执行任何逻辑操作。为了比较它们,我们可能需要对is.null
执行额外检查,然后执行逻辑比较。
我们可以使用identical
来比较处理整数的值以及NULL
。
identical(4, 2)
#FALSE
identical(NULL, 2)
#FALSE
identical(2, 2)
#TRUE
答案 1 :(得分:0)
为了回答你问题的为什么部分:
将NULL
与其他类型进行比较会得到logical(0)
(即长度为零的逻辑向量)。所以,
isTRUE(NULL != 2)
实际上是
isTRUE(logical(0))
是FALSE
。
为了比较您可能具有NULL
值的值,您还可以执行类似的操作(使用短路逻辑运算符):
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