我正试图在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。sapply
取x
的一个元素,并将其与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)
以便更好地理解。