簡體   English   中英

在 R 中定義和 plot 一個 PieceWise function

[英]Define and plot a PieceWise function in R

我試圖用 RStudio 定義這個 function 但我遇到了很多問題並且無法理解有什么問題

x <- seq(-10, 10, 0.001)
fx <- function()
if(x < 0 ) {fx<- sin(x)
} 
 else if (x >= 0 && x < 2) 
   {
   fx<- x^2
 } 
  else if(x >= 2 )
    { 
    fx<- 4*exp(x-2)
  }
}
plot(x, fx)

我怎么能這樣做? 我在互聯網上找不到任何有用的東西

您的 function if應該用於向量。 最適合我們ifelse ,或者只是利用 R 的向量功能:

fx <- function(x){
    f <- NULL
    f[x<0] <- sin(x[x<0])
    f[x>=0 & x<2] <- x[x>=0 & x<2]^2
    f[x>=2] <- 4*exp(x[x>=2] - 2)
    f
}

x <- seq(-10, 3, 0.01)
plot(x, fx(x), type="l", las=1)

在此處輸入圖像描述

嘗試這個:

x <- seq(-10, 10, 0.001)

fx <- function(x) {
  if (x < 0) {
    return(sin(x))
  } else if (x >= 0 & x < 2) {
    return(x^2)
  } else {
    return(4*exp(x-2))
  }
}

plot(x, sapply(x, fx))

代表 package (v0.3.0) 於 2020 年 4 月 11 日創建

使用Vectorize的解決方案:

x <- seq(-2, 1, 0.001)
f <- function(x) {
  if(x<0) {
    fx <- sin(x)
  } else if (x >= 0 && x < 2) {
    fx <- x^2
  } else if(x >= 2 ) { 
    fx <- 4*exp(x-2)
  }
  fx
}
f <- Vectorize(f)
plot(x, f(x))

在此處輸入圖像描述

暫無
暫無

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

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