условие на вектор логик - PullRequest
       5

условие на вектор логик

1 голос
/ 21 октября 2011

, если я сделаю следующее:

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

x оценивается как TRUE, поскольку первый элемент - TRUE. Я хотел бы, чтобы условие оценивалось как TRUE, только если каждый элемент x равен TRUE. Я думаю, что должен быть простой способ, который я пропускаю (я искал). Я думал, что all.equal будет тем, что я хотел (поэтому я мог проверить, что «все элементы x равны TRUE»), но это служит другой цели.

Я знаю, что это не идеально (он даже не проверяет, является ли x логичным), но лучшее, что я до сих пор придумал, - это сделать что-то вроде этого:

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

Каков наилучший способ сделать это?

Ответы [ 2 ]

6 голосов
/ 21 октября 2011

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"
3 голосов
/ 21 октября 2011

одна строка, чтобы сделать трюк

print(!any(!x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...