逻辑向量上的条件

时间:2011-10-21 06:04:09

标签: r

如果我执行以下操作:

x <- c(TRUE, TRUE, FALSE)
if(x) {
    print("hey there")
}

x被评估为TRUE,因为第一个元素是TRUE。我希望仅当TRUE的每个元素都为TRUE时,才会将条件计算为x。我认为必须有一种我想念的简单方法(我已经搜索过了)。我认为all.equal将是我想要的(所以我可以检查“x的所有元素都等于TRUE”),但它有不同的用途。

我知道它不理想(它甚至不检查x是否合乎逻辑),但到目前为止我提出的最好的方法是做这样的事情:

xu_if <- function(x) {
    sum(x) == length(x)
}
if(xu_if(x)) {
    print("hey there")
}

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:6)

all()是您正在寻找的功能

x <- c(TRUE, TRUE, FALSE)
if(all(x)) {
    print("hey there")
}
# >   

x <- c(TRUE, TRUE, TRUE)
if(all(x)) {
    print("hey there")
}
# [1] "hey there"

答案 1 :(得分:3)

一行来做技巧

print(!any(!x))