Документация для ifelse
гласит:
ifelse
возвращает значение с тем же
форма как test
, которая заполнена
элементы, выбранные из yes
или
no
в зависимости от того, является ли элемент
test
равно TRUE
или FALSE
.
Поскольку вы передаете тестовые значения длины 1, вы получаете результаты длины 1. Если вы пропустите более длинные тестовые векторы, вы получите более длинные результаты:
> ifelse(c(TRUE, FALSE), c(1, 2), c(3, 4))
[1] 1 4
Итак, ifelse
предназначен для конкретной цели тестирования вектора логических значений и возврата вектора такой же длины, заполненного элементами, взятыми из аргументов (vector) yes
и no
.
Распространено заблуждение, из-за названия функции, использовать его, когда вы действительно хотите просто нормальную if () {} else {}
конструкцию вместо этого.