在R中绘制分段函数时的警告消息



我正试图在R 中绘制此函数

f <- function(a,b,c,x){
if(a<=x){
return(c*x)} 
if(x<=b){
return(-c*x)}
return(0)}

但当我试图用绘制它时

a<-0
b<-6
c<-3
curve(f(a,b,c,x), xlim=c(0,6), ylim=c(0,3), col='blue', lwd=3, add=FALSE)

我得到:

Warning message in if (a <= x) {:
“the condition has length > 1 and only the first element will be used”

请帮忙吗?

函数f不能与x的向量一起操作,因为条件(a <= x)不是直接计算向量的。

让我们看看

x <- -6:6
f(a,b,c,x)

您的函数f在评估时不理解如何处理x

if (a <= x) { code }

所以总是使用CCD_ 6的第一个元素。

那么,该怎么办呢?

x   <- -6:6
f_2 <- function(x) { sapply(x, function(x) f(a,b,c,x)) }
curve(f_2, xlim=c(-6,6), ylim=c(0,20), col="blue", lwd=2, add=FALSE)

我们定义了一个新的函数CCD_ 7。sapplyx的一个元素,并将其与f(a,b,c,x)一起使用,然后使用下一个元素等。此函数以向量x作为输入。

将其与进行比较

curve(f(a,b,c,x), xlim=c(-6,6), ylim=c(0,20), col="blue", lwd=2, add=FALSE)

以便更好地理解。

最新更新