问题描述
2x-2,x < -1
0,-1 <= X <= 1
x^(2)-1,x > 1
我尝试了ifelse序列,但似乎无法使它起作用。我也尝试了一个if,elseif,else序列,但这似乎只使用第一个函数来计算答案。 最终目标是拥有这样的东西:
pwfun(c(-2,0.5,3))
2 0 8
解决方法
像下面这样的分段函数?
pwfun <- function(x) ifelse(x < -1,2 * x - 2,ifelse(x <= 1,x**2 - 1))
这样
> pwfun(c(-2,0.5,3))
[1] -6 0 8
,
pwfun <- function(x) ifelse(x < -1,(x * x) -2,x**2 - 1))
> pwfun(c(-2,3))
[1] -2 0 8
上面对ThomasIsCoding答案的编辑可以为您提供所需的内容,但我会使用这种方法,因为它可以更好地传达其意图:
library(dplyr)
df <- data.frame(x = c(-2,3))
pwfunc <- function(data){
data %>%
mutate(y =
case_when(x < -1 ~ -2,x > 0 & x <= 1 ~ 0,TRUE ~ x**2 - 1)) ## TRUE in a case_when basically
## means "everything that isnt caught by my specified conditions
## becomes..." so it works like the "else" clause
}
然后只需对您的数据调用该函数:
df <- data.frame(x = c(-2,3))
pwfunc(data)
并获得: