逻辑运算符(AND,OR)与NA,TRUE和FALSE的使用

27

我不明白逻辑(布尔)值 TRUEFALSENA 在逻辑或 (|) 和逻辑与 (&) 中的属性。以下是一些示例:

NA | TRUE
# [1] TRUE

NA | FALSE
# [1] NA

NA & TRUE
# [1] NA

NA & FALSE
# [1] FALSE

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

2个回答

33

引用自?Logic

NA是一个有效的逻辑对象。如果x或y的组成部分是NA,则在结果存在歧义时,结果将为NA。换句话说,NA&TRUE的值为NA,而NA&FALSE的值为FALSE,请参见下面的示例。

关键词是“歧义”。NA表示某些内容是“未知的”。因此,NA&TRUE可能为true或false,但我们不知道。而无论缺少值是什么,NA&FALSE都将为false。


14

根据 help("|") 的解释:

NA 是一个有效的逻辑对象。在xy的成分中,如果结果不明确,则结果将是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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接