假设我有一个变量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语句评估为FALSE
和i=0
。有谁知道我会怎么做?目前我收到此警告消息:
Warning message:
In if (y) { :
the condition has length > 1 and only the first element will be used.
我如何针对每个布尔条件测试变量y
?
答案 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