【问题标题】:Define and plot a PieceWise function in R在 R 中定义和绘制 PieceWise 函数
【发布时间】:2020-07-24 04:54:09
【问题描述】:

我试图用 RStudio 定义这个函数,但我遇到了很多问题,无法理解哪里出了问题

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)

我怎么能这样做?我在互联网上找不到任何有用的东西

【问题讨论】:

    标签: r function plot


    【解决方案1】:

    使用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))
    

    【讨论】:

      【解决方案2】:

      试试这个:

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

      reprex package (v0.3.0) 于 2020 年 4 月 11 日创建

      【讨论】:

        【解决方案3】:

        您的函数不应将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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-04
          • 2016-07-31
          • 2012-12-21
          • 1970-01-01
          • 2012-05-14
          • 1970-01-01
          • 2011-01-12
          相关资源
          最近更新 更多