我是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
答案 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]=0
和t[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
)