全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2302 11
2015-02-13
定义了如下的函数:
montemn=function(m,n){
x=1:n
out=matrix(rep(c(0,0),m),m,2)
for(i in 1:m)
y=2+0.5*x+rnorm(n)
zlm=lm(y~x)
out[i,]=t(zlm$coefficients)
out
}
> montemn(5,10)
某次提交上述参数,结果如下:
         [,1]      [,2]
[1,] 0.000000 0.0000000
[2,] 0.000000 0.0000000
[3,] 0.000000 0.0000000
[4,] 0.000000 0.0000000
[5,] 2.197341 0.4734499
为什么前面4次的结果都没有被记录下来,只有最后一次有回归结果,请高人指点一下迷津。谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-2-13 21:42:15
这个循环有问题,每次循环实际都是覆盖了前面的内容,所以最后i=5,前面数据为零~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-13 21:48:47
用大括号把for后面的语句括起来,就好了~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-13 22:23:08
呵呵哼哼哈哈 发表于 2015-2-13 21:48
用大括号把for后面的语句括起来,就好了~~
按照你的说法,可以做,能否解释一下为什么是这样的?其循环原理如何?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-13 22:31:45
不加括号,for循环作用域只是最近的一句,而你定义的y只是个局部变量,所以每次循环都会将前面的值覆盖,最后就剩下最后一次的值了,而此时i值为5,因此最后结果中只保留了最后一次运算结果,前面的全都默认为零~~不知道说明白木有~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-13 22:45:14
呵呵哼哼哈哈 发表于 2015-2-13 22:31
不加括号,for循环作用域只是最近的一句,而你定义的y只是个局部变量,所以每次循环都会将前面的值覆盖,最 ...
你的解释,我可以这样理解:也就是说,for每次作用只是到生产y这步,回归都没有做,更谈不上抽取回归估计的参数了,当最后一次循环结束,即i=5时,循环结束,然后进行回归,提取回归参数,并储存,这样只保存了最后一次的回归结果。是这样的吧!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群