首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中定义并绘制PieceWise函数

在R中定义并绘制PieceWise函数
EN

Stack Overflow用户
提问于 2020-04-11 21:04:48
回答 2查看 181关注 0票数 0

我试着用RStudio来定义这个函数,但是我遇到了很多问题,不知道哪里出了问题

代码语言:javascript
复制
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)

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

EN

回答 2

Stack Overflow用户

发布于 2020-04-11 21:37:20

您的函数不应该对向量使用if。对我们来说最好的ifelse,或者只是利用R的向量功能:

代码语言:javascript
复制
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)

票数 2
EN

Stack Overflow用户

发布于 2020-04-11 21:40:30

使用Vectorize的解决方案

代码语言:javascript
复制
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))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61157263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档