我试着用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)我怎么能这样做呢?我在网上找不到任何有用的东西
发布于 2020-04-11 21:37:20
您的函数不应该对向量使用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)

发布于 2020-04-11 21:40:30
使用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))

https://stackoverflow.com/questions/61157263
复制相似问题