首页 > 解决方案 > 有人可以解释 R 的逻辑测试结果的这种奇怪行为吗?

问题描述

在 R 中使用不同的逻辑测试组合时,我遇到了看似不一致的结果。这是一个可重现的示例:

x <- NA
y <- 1

is.na(x) # evaluates to TRUE
x == 2 # evaluates to NA

is.na(y) # evaluates to FALSE
y == 1 # evaluates to TRUE

is.na(x) & is.na(y) # evaluates to FALSE
is.na(x) & y == 1 # evaluates to TRUE

以上所有评估都符合我的期望。奇怪的部分(对我来说)如下:

x == 1 & y == 1 # evaluates to NA
x == 1 & is.na(y) # evaluates to FALSE
x == 1 & y == 0 # evaluates to FALSE

我假设x == 1 & y == 1评估为,NA因为x为空,这阻止了对TRUEor的逻辑评估FALSE。所以,我的问题是为什么将逻辑更改为x == 1 & is.na(y)x == 1 & y == 0实际导致FALSE?我希望后两个逻辑测试也会产生结果,NA因为x == 1不能是TRUEor FALSE

标签: rlogical-operators

解决方案


推荐阅读