簡體   English   中英

R 中的分段函數幫助

[英]Piecewise Function Help in R

對於一個類,我必須創建一個按以下方式定義的分段函數:

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, 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)

並得到:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM