曲线中的误差expr = x,from = from,to = to,xlim = xlim,ylab = ylab,:'expr'不求值为长度为'n'的对象

问题描述

我想绘制以下分段函数,但是我不断收到错误消息

a <- function(x) {ifelse(( x < -1),ifelse((-1 < x & x < 2),(x^3 + 1)/9,ifelse((x > 2),1,NA))) } 
 plot(a,xlim=c(-5,5),ylim = c(-4,7),col = "red") 
 abline(v = 0,h = 0)

解决方法

您的代码几乎是正确的,但是添加空格使其可读性会有所帮助。如@Phil所述,将触发该错误,因为R将x<-1解释为“将1的值分配给x”。您正在使用plot命令的版本来绘制函数,该版本已通过curve函数记录(请参见?curve)。您可能应该包含from=to=参数,但是该函数将使用不带xlim值的值:

a <- function(x){ ifelse(( x < -1),ifelse((-1 < x & x < 2),(x^3 + 1)/9,ifelse((x > 2),1,NA))) }
plot(a,from=-5,to=5,n=201,xlim=c(-5,5),ylim = c(-4,7),col = "red")
abline(v = 0,h = 0,lty=3)

请注意plot()命令的添加。我将abline更改为使用虚线,这使该功能更易于查看。添加n=201会增加直线中的点数,因此曲线更平滑,线段之间的间隙更小。

Plot