【问题标题】:Logical operators (AND, OR) with NA, TRUE and FALSE具有 NA、TRUE 和 FALSE 的逻辑运算符(AND、OR)
【发布时间】:2013-05-30 19:14:34
【问题描述】:
当与逻辑 OR (|) 和逻辑 AND (&) 一起使用时,我无法理解逻辑(布尔)值 TRUE、FALSE 和 NA 的属性。以下是一些示例:
NA | TRUE
# [1] TRUE
NA | FALSE
# [1] NA
NA & TRUE
# [1] NA
NA & FALSE
# [1] FALSE
你能解释一下这些输出吗?
【问题讨论】:
标签:
r
logical-operators
r-faq
【解决方案1】:
引用?Logic:
NA 是一个有效的逻辑对象。如果 x 或 y 的分量为 NA,则
如果结果不明确,则结果将为 NA。换句话说,NA &
TRUE 计算结果为 NA,但 NA & FALSE 计算结果为 FALSE。见
下面的例子。
这里的关键是“模棱两可”这个词。 NA 代表“未知”的东西。所以NA & TRUE 可能是真也可能是假,但我们不知道。而NA & FALSE 将是 false,无论缺失值是什么。
【解决方案2】:
在help("|")中有解释:
NA 是一个有效的逻辑对象。其中x 或y 的组件
是NA,如果结果不明确,结果将是NA。在
换句话说,NA & TRUE 的计算结果为 NA,但 NA & FALSE
评估为FALSE。请参阅下面的示例。
来自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