R For 循环 - 回归 - 矩阵

Posted

技术标签:

【中文标题】R For 循环 - 回归 - 矩阵【英文标题】:R For Loop - Regression - Matrix 【发布时间】:2016-02-26 18:51:19 【问题描述】:

我试图弄清楚如何制作一个执行 10 次回归然后将其放入 10x11 矩阵的 for 循环。

这是我正在使用的代码,但由于某种原因它无法正常工作......

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)

我不断收到此警告:

警告信息: 在 matrix(Pwdlm.list[[i]]$coefficients, nrow = 10, ncol = 11) 中: 数据长度[25]不是行数[10]的约数或倍数

但我需要将数据放入 10 行。

我知道不看数据很难,但我不确定它是否与 [,9+i] 有关

【问题讨论】:

这并没有明确回答您的问题,但我认为它可能有用且效率更高:***.com/a/35638859/2378649 要使其在您的设置中工作(即dplyr 部分),您可能需要melt 你的数据框并创建一个分组变量。 寻求帮助时,请在示例输入数据中包含一个最小的reproducible example,以便我们可以复制/粘贴代码以获得相同的错误。这使帮助您变得更加容易。似乎您获得了超过 10 个系数。您是否在没有循环的情况下运行它以验证它是否按预期工作?你所有的列都是数字的吗? 谢谢。对不起是我的第一篇文章。一旦我可以尝试这些方法,我会尽快回复你们。我喜欢 sapply 的想法,并会尝试。我确实有一个分组变量。但是是的,我得到 25 行而不是 10 行。 【参考方案1】:

您似乎没有收到来自lm-调用或分配给Pwdlm.list 的错误。试试这个:

 Pwdmat = sapply(Pwdlm.list, coefficients)

sapply 函数尝试在所有返回值的长度相等时返回一个矩阵。每个回归的值都将位于一列中,这似乎是您希望获得的形式。

【讨论】:

以上是关于R For 循环 - 回归 - 矩阵的主要内容,如果未能解决你的问题,请参考以下文章

matlab for循环 改写成 矩阵算法

在每 2 行之后生成一个升序值矩阵,在 R 中没有 for 循环

如何在矩阵内使用for循环和数据在R中创建点图?

如何将矩阵 R 放入循环中并生成矩阵 R> 的新值> [关闭]

R如何为循环编写双精度并将结果存储在矩阵中

R:在没有预分配的情况下动态更新矩阵时的效率问题