2016-02-26 111 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功能嘗試返回一個矩陣當所有返回值的長度是相等的。每個迴歸的值都將在一列中,並且看起來就是您希望獲得的表單。