为什么R语言中5 == 3|7和3 == 7|5的运算结果为TRUE?
R语言逻辑运算结果异常原因说明
首先确认==运算符优先级高于|的结论是正确的,两个表达式返回TRUE的核心原因是R语言中数值参与逻辑运算的隐式转换规则,具体运算逻辑拆解如下:
表达式1:5 == 3|7
- 第一步优先计算
==运算:5 == 3返回逻辑值FALSE - 第二步计算逻辑或
|运算:FALSE | 7,R语言默认将非0的数值统一转换为逻辑值TRUE,0转换为FALSE,因此7会被隐式转为TRUE - 最终
FALSE | TRUE的运算结果为TRUE
表达式2:3 == 7|5
- 第一步优先计算
==运算:3 ==7返回逻辑值FALSE - 第二步计算逻辑或
|运算:FALSE |5,5为非0数值,隐式转换为TRUE - 最终运算结果为
TRUE
避坑提示
如果你的预期是判断某个值是否等于多个候选值中的任意一个,不要直接写x == a|b的格式,应该使用x %in% c(a,b),或者显式补全判断条件x == a | x ==b,避免触发非预期的隐式类型转换。
内容的提问来源于stack exchange,提问作者Ada
相关产品推荐
相关产品推荐

