带有 NA、TRUE 和 FALSE 的逻辑运算符(AND、OR)

Logical operators (AND, OR) with NA, TRUE and FALSE

提问人:Remi.b 提问时间:5/31/2013 最后编辑:JaapRemi.b 更新时间:1/15/2020 访问量:3695

问:

我无法理解逻辑(布尔值)的属性,以及与逻辑 OR() 和逻辑 AND() 一起使用时。以下是一些示例:TRUEFALSENA|&

NA | TRUE
# [1] TRUE

NA | FALSE
# [1] NA

NA & TRUE
# [1] NA

NA & FALSE
# [1] FALSE

你能解释一下这些输出吗?

逻辑运算符 R-FAQ

评论


答:

33赞 joran 5/31/2013 #1

引用自:?Logic

NA 是有效的逻辑对象。其中 x 或 y 的分量为 NA,则 如果结果不明确,则结果将为 NA。换句话说,NA & TRUE 的计算结果为 NA,但 NA & FALSE 的计算结果为 FALSE。请参阅 示例如下。

关键是“模棱两可”这个词。 代表“未知”的东西。所以可能是真的,也可能是假的,但我们不知道。而无论缺失值是什么,都将是假的。NANA & TRUENA & FALSE

14赞 Joshua Ulrich 5/31/2013 #2

它的解释如下:help("|")

NA是有效的逻辑对象。如果 或 的分量为 ,则结果为:如果结果不明确。在 其他词的计算结果为 ,但计算结果为 。请参阅以下示例。xyNANANA & TRUENANA & FALSEFALSE

从以下示例中:help("|")

x <- c(NA, FALSE, TRUE)
names(x) <- as.character(x)
outer(x, x, "&") ## AND table
#        <NA> FALSE  TRUE
# <NA>     NA FALSE    NA
# FALSE FALSE FALSE FALSE
# TRUE     NA FALSE  TRUE

outer(x, x, "|") ## OR  table
#        <NA> FALSE TRUE
#  <NA>    NA    NA TRUE
# FALSE    NA FALSE TRUE
#  TRUE  TRUE  TRUE TRUE