2012-11-14 38 views
2

假设我有一个变量y和一个变量iR:如何测试多个条件?

y<- c(TRUE, TRUE, TRUE) 
i<- 0 

比方说,我想测试下if语句为布尔条件y

if (y) { 
i<-1 
} 

我会怎么做呢?也就是说,我想要i = 1如果布尔条件yTRUE

如果y<- c(TRUE, FALSE,TRUE),那么我希望if语句评估为FALSEi=0。有谁知道我该怎么做?目前,我得到这个警告消息:

Warning message: 
In if (y) { : 
    the condition has length > 1 and only the first element will be used. 

我将如何测试变量y为每个它的布尔条件?

回答

3

您正在寻找all功能。

> y <- c(T, T, T) 
> all(y) 
[1] TRUE 
> y <- c(T, T, F) 
> all(y) 
[1] FALSE 
+0

谢谢@Dason我很感激 – cooldood3490

4

为了详细说明@达诚的回答,all()any()sum()which()与逻辑载体

例工作时是非常有用的:

 vec1 <- c(T, T, F, T, F) 

>  all(vec1) # Are all elements True 
     [1] FALSE 

>  any(vec1) # Are any True 
     [1] TRUE 

>  sum(vec1) # How many are True 
     [1] 3 

>  which(vec1) # Which elements (by index) are True 
     [1] 1 2 4 

>  which(!vec1) # Which elements (by index) are False 
     [1] 3 5 

例2:

vec2 <- c(T, T, T, T, T) 

all(vec2)  # TRUE 
any(vec2)  # TRUE 
sum(vec2)  # 5 
which(vec2) # 1 2 3 4 5 
which(!vec2) # integer(0)