В программировании на R, в чем разница между any и | (или) логический оператор? - PullRequest
1 голос
/ 12 февраля 2020
  • (cond1 | cond2 | cond3 | ...) означает "верно ли одно или несколько условий?"
  • any(cond1, cond2, cond3 ....) означает "верно ли какое-либо из условий? «

Как так, разве мы не говорим здесь то же самое?

Есть ли преимущества использования одного над другим?

1 Ответ

7 голосов
/ 12 февраля 2020

| векторизовано - оно возвращает результат той же длины, что и самый длинный ввод, и при необходимости будет перезагружаться.

any просматривает все входы и возвращает результат длины 1.

|| производит только одно сравнение, используя первые элементы своих входов независимо от их длины, и возвращает результат длины 1.

x = c(FALSE, TRUE, FALSE)
y = c(FALSE, FALSE, FALSE)

any(x, y)
# [1] TRUE
## There's a TRUE in there somewhere

x | y
# [1] FALSE  TRUE FALSE
## Only the 2nd index of the vectors contains a TRUE

x || y
# [1] FALSE
## The first position of the vectors does not contain a TRUE.

Если все входы имеют длину один, то x1 | x2 | x3 эквивалентно x1 || x2 || x3 эквивалентно any(x1, x2, x3). В противном случае, нет гарантии.

...