找回密码
 立即注册
查看: 12018|回复: 3

R语言总是显示unused argument从而无法运行

[复制链接]
发表于 2016-1-25 16:15:14 | 显示全部楼层 |阅读模式
R数据分析:方法与案例详解中P49练习
求解二元函数g(x1,x2)=(x1^2+x2-11)^2+(x1+x2^2-7)^2
在画图部分,我敲进电脑的程序和书上写的一模一样,如下:
x1<-x2<-seq(-10,10,length=100)
fr2=function(x){
  x1=x[1]
  x2=x[2]
  (x1^2+x2-11)^2+(x1+x2^2-7)^2
}
grr=function(x){
  x1=x[1]
  x2=x[2]
  c(2*(x1^2+x2-11)*2*x1+2*(x1+x2^2-7),2*(x1^2+x2-11)+2*(x1+x2^2-7)*2*x2)
}
z=outer(x1,x2,fr2)
image(x1,x2,z)
contour(x1,x2,z,add=T)
persp(x1,x2,z)
persp(x1,x2,z,box=T,border=T,theta = 45,phi=35)

当程序运行到“z=outer(x1,x2,fr2)”时就会出现问题,显示如下:
Error in FUN(X, Y, ...) : unused argument (Y)
后面无法进行了……
我确实和书上打的一样,然后也使用了rm函数将之前可能存在内存中的变量都去掉了,还是不行。感谢大师援手!
回复

使用道具 举报

发表于 2016-2-2 14:48:35 | 显示全部楼层
1、outer(x1,x2,fr2)这句中你给fr2函数传了2个参数,但是定义的fr2函数的参数只有一个,提示说参数Y没有用到,那么应该是x2没有传过去
2、即使重新定义fr2函数为接收两个参数的函数后,在outer句子中fr2函数只返回一个结果,而outer的结果是一个length(x1)*length(x2)的一个矩阵,程序运行还是错误,若是把fr2换成R定义好的函数运行结果就正确了。
我目前还不知道R自定义函数的用法,正在学习中,所以outer中用fr2函数的错误要怎么解决还不知道
回复

使用道具 举报

发表于 2016-2-2 15:04:41 | 显示全部楼层
突然问题到底在哪了,你的fr2函数中x1和x2是固定的值,所以在outer函数中调用fr2后,只返回一个值,不会对x1和x2循环。你应该把fr2改成:
fr2=function(x1,x2){
  (x1^2+x2-11)^2+(x1+x2^2-7)^2
}
z<-outer(x1,x2,fr2)
回复

使用道具 举报

发表于 2016-2-2 15:05:04 | 显示全部楼层
突然问题到底在哪了,你的fr2函数中x1和x2是固定的值,所以在outer函数中调用fr2后,只返回一个值,不会对x1和x2循环。你应该把fr2改成:
fr2=function(x1,x2){
  (x1^2+x2-11)^2+(x1+x2^2-7)^2
}
z<-outer(x1,x2,fr2)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-23 15:01 , Processed in 0.024676 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表