我正在尝试编写一个 for 循环,该循环在因子变量的 4 个不同级别上分别运行相同的回归(相同的因变量和自变量)4 次。然后我想保存每个线性回归的输出每个级别都有大约 500 行数据。
我最初的想法是做这样的事情,但我对 R 和不同的迭代方法很陌生。
Regressionresults <- list()
for (i in levels(mydata$factorvariable)) {
Regressionresults[[i]] <- lm(dependent ~ ., data = mydata)
}
我怀疑这很容易做到,但我不知道如何做。
如果您还可以引导我访问任何帮助文档或其他资源,让我可以学习如何编写这些类型的循环,这样我就不必再次提出类似的问题,我将不胜感激。
提前谢谢了!
问题中的代码存在的问题是:
- 在 R 中,通常最好一开始就不要使用循环
- 通常 i 用于顺序索引,所以它不是一个好的
选择用于级别的名称
- 循环体不执行任何子集设置,因此它将在每次迭代中分配相同的结果
- 发布到 SO 的帖子应该具有可重复的数据,而问题不包括这一点,而是引用了对象而不定义其内容。请阅读顶部的说明r /questions/tagged/r标签页。下面我们使用内置的虹膜数据集来实现可重复性。
以下是一些使用内置虹膜数据框来实现可重复性的方法。每个结果都会产生一个命名列表,其中名称是物种的级别。
1) lm 子集参数 Map
给出一个列表的级别:
sublm <- function(x) lm(Petal.Width ~ Sepal.Width, iris, subset = Species == x)
levs <- levels(iris$Species)
Map(sublm, levs)
2) loop sublm
and levs
来自(1)。
L <- list()
for(s in levs) L[[s]] <- sublm(s)
3) nlme或使用 nlme 中的 lmList
library(nlme)
L3 <- lmList(Petal.Width ~ Sepal.Width | Species, iris)
coef(L3)
summary(L3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)