Как вы уже знаете, ваша функция написана только для скалярных входов, а не для векторов. Итак,
ex(10)
ex(12)
работает. Но
ex(c(10, 12))
нет. (На самом деле это дает ожидаемый результат с предупреждением в этом случае)
Без изменения функции одним из способов является использование sapply
sapply(c(10, 12), ex)
Или вы можете измените функцию и используйте ifelse
, который будет работать для векторов
ex1 <- function(x){
ifelse(x < -1,(-2 * x) -2,
ifelse(-1 <= x & x <= 1, 0,
ifelse(1 < x,(x * x) - 1,NA)))
}
ex1(c(10, 12))
или с dplyr::case_when
ex2 <- function(x){
dplyr::case_when(x < -1 ~ (-2 * x) -2,
-1 <= x & x <= 1 ~ 0,
1 < x ~ (x * x) - 1)
}