ifelse(any(is.na(x),is.na(y)),
c(x1,y1)[c(!is.na(x),!is.na(y))],
ifelse(x < y, x1, y1))
Сначала мы проверяем, есть ли какие-либо NA, если они есть, мы возвращаем ответ, который совпадает с тем, который не является NA.Если нет NA, мы запускаем оригинальный ifelse, написанный OP.