在具有两个逻辑值的向量上应用ifelse

时间:2013-07-17 08:31:14

标签: r if-statement

我有一个值向量,我想确定这个向量的哪些元素在某个区间内,哪些元素不是。

所以我做了以下事情:

vec <- ifelse( 1<va2<3, 1, 0);

但是我收到一条错误说:意外'&lt;'在vec 所以我尝试了以下内容:

vec <- ifelse( 1<va2 && va2<3, 1, 0);

但它只给了我第一个值。

那么如何让ifelse使用两个逻辑值,还是有其他选择?

感谢。

1 个答案:

答案 0 :(得分:2)

尝试使用&而不是&&进行元素比较,这是在对元素向量进行逻辑比较时应该使用的那个。

> va2 <- c(2,1,4,2,6,0,3)
> ifelse( 1<va2 & va2<3, 1, 0)
[1] 1 0 0 1 0 0 0

从帮助文件(请参阅?"&"),您可以找到以下内容:

& and && indicate logical AND and | and || indicate logical OR. The shorter
form performs elementwise comparisons in much the same way as arithmetic 
operators. The longer form evaluates left to right examining only the first 
element of each vector. Evaluation proceeds only until the result is determined.
The longer form is appropriate for programming control-flow and typically 
preferred in if clauses.