R:布尔OR和双等

时间:2016-01-24 19:47:15

标签: r boolean logical-operators

a=1; b=2。为什么(a|b)==1会产生TRUE(a|b)==2 FALSE?如果其中一个(或两个)变量匹配,那么返回TRUE的简单方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您查看TRUEFALSE评估的数值,则分别为10

as.numeric(c(TRUE, FALSE))
#[1] 1 0

答案 1 :(得分:2)

|比较两个布尔值。

在这种情况下,(a|b)本身会返回TRUE,因为将0转换为FALSE,其他所有内容都转换为TRUE,从而强制转换为布尔值。

来自?base::Logic

  

数字和复杂矢量将被强制转换为逻辑值   零为假,所有非零值均为真。原始载体是   在没有任何强制的情况下处理!,&,|和xor,与这些运算符   按位应用(所以!是1s补码)。

但是,

==不会这样做;它会将TRUE强制转换为数字形式1,因此1==2会返回FALSE

来自?base::Comparison

  

如果两个参数是不同类型的原子矢量,则一个是   强迫对方的类型,优先顺序(递减)   是字符,复数,数字,整数,逻辑和原始。