Я хочу векторизовать функцию, которая опирается на проверку условия и, в зависимости от того, является ли это условие ИСТИНА или ЛОЖЬ, возвращает результат одной из двух функций соответственно.Проблема в том, что, когда условие ЛОЖЬ, первая функция не может быть оценена.Затем ifelse возвращает правильные значения, но также выдает предупреждение.Я хотел бы создать функцию, которая не выдает предупреждения.
Я пробовал ifelse()
, но она не работает.Я ожидал, что эта команда пропустит оценку первой функции, когда условие имеет значение FALSE.
Вот иллюстративный фрагмент кода R
p = c(-1,1,-1,1,-1,-1,-1,1)
ifelse(p>0, sqrt(p), p^2)
, который возвращает
[1] 1 1 1 1 1 1 1 1
Warning message:
In sqrt(p) : NaNs produced
Как видите, результат верный, но по какой-то причине он оценивает функцию в первой функции, когда условие ЛОЖЬ.Таким образом, я хотел бы как-то избежать этой проблемы.