R 中的分段函数帮助
Piecewise Function Help in R
对于 class 我必须创建一个按以下方式定义的分段函数:
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
piece-wise 函数如下?
pwfun <- function(x) ifelse(x < -1, 2 * x - 2, ifelse(x <= 1, 0, x**2 - 1))
这样
> pwfun(c(-2, 0.5, 3))
[1] -6 0 8
pwfun <- function(x) ifelse(x < -1, (x * x) -2, ifelse(x <= 1, 0, x**2 - 1))
> pwfun(c(-2, 0.5, 3))
[1] -2 0 8
上面对 ThomasIsCoding 的回答的编辑给了你想要的,但我会使用这种方法,因为它更好地传达了它的意图:
library(dplyr)
df <- data.frame(x = c(-2, 0.5, 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, 0.5, 3))
pwfunc(data)
并得到:
对于 class 我必须创建一个按以下方式定义的分段函数:
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
piece-wise 函数如下?
pwfun <- function(x) ifelse(x < -1, 2 * x - 2, ifelse(x <= 1, 0, x**2 - 1))
这样
> pwfun(c(-2, 0.5, 3))
[1] -6 0 8
pwfun <- function(x) ifelse(x < -1, (x * x) -2, ifelse(x <= 1, 0, x**2 - 1))
> pwfun(c(-2, 0.5, 3))
[1] -2 0 8
上面对 ThomasIsCoding 的回答的编辑给了你想要的,但我会使用这种方法,因为它更好地传达了它的意图:
library(dplyr)
df <- data.frame(x = c(-2, 0.5, 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, 0.5, 3))
pwfunc(data)
并得到: