La documentación de los ifelseestados:
ifelsedevuelve un valor con la misma forma que el testque se rellena con elementos seleccionados de yeso
nodependiendo de si el elemento de testes TRUEo FALSE.
Dado que pasa valores de prueba de longitud 1, obtiene resultados de longitud 1. Si pasa vectores de prueba más largos, obtendrá resultados más largos:
> ifelse(c(TRUE, FALSE), c(1, 2), c(3, 4))
[1] 1 4
Así que ifelseestá destinado al propósito específico de probar un vector de valores booleanos y devolver un vector de la misma longitud, lleno de elementos tomados del (vector) yesy noargumentos.
Es una confusión común, debido al nombre de la función, usar esto cuando realmente desea una if () {} else {}construcción normal .