if-else vs ifelse with lists

From the ifelse documentation:

 ‘ifelse’ returns a value with the same shape as ‘test’ which is
 filled with elements selected from either ‘yes’ or ‘no’ depending
 on whether the element of ‘test’ is ‘TRUE’ or ‘FALSE’.

So your input has length one so the output is truncated to length 1.

You can also see this illustrated with a more simple example:

ifelse(TRUE, c(1, 3), 7)
# [1] 1

Leave a Comment