为什么我们在R中有两种类型的逻辑a

时间:2015-04-04 01:51:56

标签: r

我一直在阅读&和和&&在R。

据我所知,与其他语言不同,&用于按位运算和&&用于 height>等条件150&&高度<在R中,两者都是针对后者的。对于按位,还有其他功能,例如 bitwAnd(a,b)

然而,&和/或之间的区别是什么?和&&根据我的阅读,我所理解的是" 较长的形式(&&& I guess)适用于编程控制流程,通常首选if if条款"

然而,我正在尝试一种似乎有效的方法而另一方似乎并没有?

> which( (df$Cost > 14789) & (df$Cost < 14791) )
[1]  29989  69576 116578 137242 160072
> which( (df$Cost > 14789) && (df$Cost < 14791) )
integer(0)

1 个答案:

答案 0 :(得分:0)

&以与算术运算符非常相同的方式执行元素比较。

&&从左到右评估每个向量的第一个元素。评估仅在确定结果之前进行。

所以在你的代码中

> which( (df$Cost > 14789) & (df$Cost < 14791) )
[1]  29989  69576 116578 137242 160072
> which( (df$Cost > 14789) && (df$Cost < 14791) )
integer(0)

第一个语句按元素计算向量,因此得到结果。 第二个只是向量的第一个元素。