楼主: harlon1976
2344 11

[问答] 输出结果请教 [推广有奖]

  • 2关注
  • 27粉丝

版主

院士

54%

还不是VIP/贵宾

-

威望
1
论坛币
33781 个
通用积分
135.1232
学术水平
25 点
热心指数
39 点
信用等级
17 点
经验
59249 点
帖子
1928
精华
0
在线时间
4352 小时
注册时间
2005-8-27
最后登录
2025-12-9

楼主
harlon1976 发表于 2015-2-13 21:29:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
定义了如下的函数:
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次的结果都没有被记录下来,只有最后一次有回归结果,请高人指点一下迷津。谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:输出结果 coefficients coefficient EFFICIENT function function matrix 记录

沙发
呵呵哼哼哈哈 发表于 2015-2-13 21:42:15
这个循环有问题,每次循环实际都是覆盖了前面的内容,所以最后i=5,前面数据为零~~

藤椅
呵呵哼哼哈哈 发表于 2015-2-13 21:48:47
用大括号把for后面的语句括起来,就好了~~

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

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

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

7
呵呵哼哼哈哈 发表于 2015-2-13 23:13:07
harlon1976 发表于 2015-2-13 22:45
你的解释,我可以这样理解:也就是说,for每次作用只是到生产y这步,回归都没有做,更谈不上抽取回归估计 ...
是这个意思~~

8
nuomin 发表于 2015-2-14 11:47:20
R 中尽可能用apply,不用for循环,当数据量稍微大点时,这两个函数的运行时间差别就很大了

9
harlon1976 发表于 2015-2-14 14:29:07
nuomin 发表于 2015-2-14 11:47
R 中尽可能用apply,不用for循环,当数据量稍微大点时,这两个函数的运行时间差别就很大了
我才学习R,请问如何用Apply实现上述程序要求,请不灵赐教!

10
ryoeng 在职认证  发表于 2015-2-14 21:41:54
提示: 作者被禁止或删除 内容自动屏蔽

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 08:24