【发布时间】:2019-02-12 16:40:47
【问题描述】:
为什么R会这样?
> F & NA
[1] FALSE
> T & NA
[1] NA
我希望代码的第一行也可以评估为NA。人们告诉我“这只是 R 的奇怪行为”,但还有其他概念吗?
【问题讨论】:
-
因为当你做
F & condition2时,R不会检查condition2,依赖规则F & something总是F。虽然我不确定,因为F & ("a"+1)会引发错误(F && ("a"+1)不会)。 -
如果 AND 中的第一个值是假的,那么无论第二个值是什么,答案都是假的。但是如果第一个值为真,那么只有当第二个值也为真时 AND 才会为真,但由于缺少 (NA),因此无法判断表达式是真还是假。
-
@MrFlick 我刚刚编辑了我之前的评论。我补充说,但是,
F & ("a"+1)会抛出一个错误(我期望F)。所以R“看”condition2。 -
补充上面所说的,
TRUE && something始终是something。 -
@StéphaneLaurent 那是因为
&的表达式仍然被评估,但它不是&&因为那是“短路的”。所以&不一定会忽略第二个参数,它只是有足够的信息可以肯定地知道结果是什么。NA & F也返回 FALSE。
标签: r logical-operators na