我试图通过多种方式解决这个问题,但我是R的新手,所以我不知道提示和技巧。我正在尝试使用由我的老师提供的二次函数的代码来绘制多项式函数,但是,我仍然遇到"未使用的参数错误"。问题是我给出了三个参数,这是函数所期望的。这是我输入的代码:
> quadratic <- function(x, u.values){
+ X <- cbind(1, x, x^2)
+ return(X %*% u.values)
+ }
> dev.new()
> ggplot() +
+ geom_point(aes(x = t,y = y),data= GData)+
+ stat_function(fun=quadratic(args=c(1.9604816, -0.1201548, -4.9768049)))
Error in quadratic(args = c(1.9604816, -0.1201548, -4.9768049)) :
unused argument(s) (args = c(1.9604816, -0.1201548, -4.9768049))
答案 0 :(得分:8)
正如您所定义的那样,quadratic
没有args
参数。这是造成错误的原因。
我在猜测 - 但我无法测试,因为您的示例不可重复 - 您应该在args
调用中将stat_function
更改为某些内容比如args = list(u.values = c(1.9604816, -0.1201548, -4.9768049))
。
编辑:
为了澄清,args
的{{1}}参数将您指定的函数(在本例中为stat_function
)的其他参数作为quadratic
。当您想要将命名参数list
传递给args
时,您正在做的是将命名参数quadratic
传递给args
。
这是一个可以重现的例子:
stat_function
显然这些数据与您的数据无关,但g <- data.frame(t = seq(0.1, 1, by = 0.1), y = seq(2.1, 3, by = 0.1))
quadratic <- function(x, u.values){
X <- cbind(1, x, x^2)
return(X %*% u.values)
}
ggplot(data = g, aes(x = t, y = y)) +
geom_point() +
stat_function(fun = quadratic,
args = list(u.values = c(1.9604816, -0.1201548, -4.9768049)))
函数已正确应用于数据并绘制结果。