2016-02-26 81 views
0

我想弄清楚如何做一个回归10次回归,然后把它放在一个10x11矩阵。R对于循环 - 回归 - 矩阵

这里是我使用的代码,由于某种原因它不工作...

for (i in 1:10) { 
Pwdlm.list[[i]] = 
lm(Pwd[,9+i]~logwprice1+logwprice2+logwprice3+logwprice4+ 
    logwprice5+logwprice6+logwprice7+logwprice8+logwprice9+logwprice10+ 
    Pwd$storeid, data=Pwd) 
} 
Pwdmat = matrix(Pwdlm.list[[i]]$coefficients, nrow = 10, ncol = 11) 

我不断收到这样的警告:

警告消息: 在矩阵(Pwdlm。列表[[i]] $系数,nrow = 10,ncol = 11): 数据长度[25]不是行数的次数或倍数[10]

但我需要的数据适合10行。

我的理解是很难没有看到数据,但我不能确定它是否有东西做的[9 + 1]

+0

这并没有明确地回答你的问题,但我认为它可能是有用的,更有效:http://stackoverflow.com/a/35638859/2378649为了使它在你的设置('dplyr'部分,那就是),你可能需要“融化”你的数据框并创建一个分组变量。 – coffeinjunky

+0

当请求帮助时,请在样本输入数据中包含一个最小[可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),这样我们就可以复制/粘贴代码以获得相同的错误。这使你更容易帮助你。看起来你正在获得10多个系数。你有没有循环运行它来验证它按预期工作?你所有的列都是数字吗? – MrFlick

+0

谢谢。对不起,我的第一篇文章。只要我可以尝试这些方法,我会尽快回到你们身边。我喜欢安慰的想法,并会尝试。我确实有一个分组变量。但是,我得到了25行而不是10行。 –

回答

0

看来你没有从lm -call或分配得到一个错误到Pwdlm.list。尝试这个代替:

Pwdmat = sapply(Pwdlm.list, coefficients) 

sapply功能尝试返回一个矩阵当所有返回值的长度是相等的。每个回归的值都将在一列中,并且看起来就是您希望获得的表单。