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