如何测试多个条件?

时间:2012-11-14 02:26:17

标签: r if-statement boolean

假设我有一个变量y和一个变量i

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

假设我想在y中为每个布尔条件测试以下if语句:

if (y) {
i<-1
}

我该怎么做?也就是说,如果i = 1中的每个布尔条件都是y,我希望TRUE

如果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

2 个答案:

答案 0 :(得分:4)

要详细说明@Dason的回答,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)

答案 1 :(得分:3)

您正在寻找all功能。

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