Использовать IFELSE в функции

Вопрос:

У меня возникла проблема с выполнением команды ifelse. Я хотел бы возвращать только положительные (или 0) выходы. Например, в следующем уравнении y=-50+(x^2), когда y<=0, y должно возвращать 0. Когда y>0 он должен вернуть правильное выходное значение. Когда я реализую следующий код:

test = function (x) 50+(x^2)
if(test <= 0) test <- 0 else y <-50+(x^2)

Я всегда получаю 0.

Ответ №1

Возможное решение:

test <- function(x) (x ^ 2 > 50) * (x ^ 2 - 50)

test(5)
# [1] 0
test(10)
# [1] 50

Другой подход:

test2 <- function(x) pmax(0, x ^ 2 - 50)

Ответ №2

Одно решение

test = function(x) ifelse(0>(-50+x^2), 0, -50+x^2)

test(10)
[1] 50
test(100)
[1] 9950

Оцените статью
TechArks.Ru
Добавить комментарий