2013-07-17 61 views
0

我有一個向量值,我想確定此向量的哪些元素在某個區間內,哪些元素不是。在具有兩個邏輯值的向量上應用ifelse

所以我做了以下內容:

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

,但我得到一個錯誤說:意外「<」在VEC 所以我嘗試了以下內容:

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

,但它只是給了我第一個值。

那麼如何獲得ifelse使用兩個邏輯值,還是有其他的選擇?

謝謝。

回答

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. 
相關問題