OR运算符如何工作

时间:2017-05-26 10:21:58

标签: r logical-operators

我是R.的新手。我想确认一下我对这个概念的理解是否正确。

使用逻辑运算符时OR我无法理解下面的输出。当第二个元素都为0时,情况1的结果为“假”,而当这些数字> 0时,情况1为“真”。这是因为0总是被认为是“FAlse”,在这种情况下这两个值都是“假”吗?

案例1

v <- c(3,0,TRUE,2+2i)
t <- c(3,0,FALSE,2+3i)
print(v|t)
#[1]  TRUE FALSE  TRUE  TRUE

案例2

GET

2 个答案:

答案 0 :(得分:2)

您正在对向量v和t进行元素逻辑比较。并且因为任何数字&gt; 0如果转换为逻辑,则评估为TRUE,您将获得此输出。 (请注意下面的评论)

您可以在后台考虑这种情况(案例1 ):

   as.logical(3) | as.logical(4)
   as.logical(0) | as.logical(0)
            TRUE | TRUE
as.logical(2+2i) | as.logical(2+2i)

产生我们的输出:

TRUE FALSE TRUE TRUE

答案 1 :(得分:1)

R将TRUE视为1,将FALSE视为0.您的理解是正确的。您进行了元素检查,在v[2]=0t[2]=0的情况下,R理解:0 | 0因此为0,即FALSE OR FALSE = FALSE

您可以通过将0输入之一(v [2] = 0和t [2] = 0)更改为!=0来检查此项。

作为评论: 您必须考虑到您不能使用c()创建包含不同类的变量。在这种情况下,R会将您提供的所有输入解释为复数。我的意思是TRUE转换为1+0i而FALSE转换为0+0i(请检查: print(v) >v [1] -3+0i 0+0i 1+0i 0+2i