2

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

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

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

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每个布尔条件的变量?

4

2 回答 2

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)
于 2012-11-14T06:45:17.237 回答
3

您正在寻找该all功能。

> y <- c(T, T, T)
> all(y)
[1] TRUE
> y <- c(T, T, F)
> all(y)
[1] FALSE
于 2012-11-14T02:28:31.400 回答