y <- if (x < 5) 1 else 2
не работает на весь вектор (предупреждение, которое вы получаете, указывает, что будет использоваться только первый элемент условия). Вы хотите ifelse
:
y <- ifelse(x < 5, 1, 2)
ifelse
работает по всему логическому вектору, поэтапно. if
принимает только одно логическое значение. См. ?"if"
и ?ifelse