在lm中循环每个因子r
问题描述:
我有一个有多个因素的数据库。我想迭代每个变量的每个因子的回归,但对于整个数据库。例如:在lm中循环每个因子r
for (i in unique(db$Product)) {
for (j in unique(db$Super)) {
for (c in unique(db$Category)) {
db$prueba <- lm(prueba ~ 0 + as.factor(Super)[j] *
(as.factor(Time) + as.factor(Product)[i])
+ as.factor(Category)[c] * as.factor(Time)
, db)$residuals
}
}
}
以上三个变量中的三个要像对待因素一样处理:Category,Super和Product。我想在每次迭代中选择其中的一个。这就是为什么我试图在前面的例子中每次调用Super[j]
的原因。如果我只使用as.factor(Category),那么R将为Category中的每个值创建一个虚拟变量,我想每次迭代只选择一个。
当运行以前的代码我有以下错误:
错误model.frame.default(式= prueba〜0 + as.factor(超级)[J] *: 可变长度不同( 。发现 'as.factor(超级)[J]')
任何帮助将不胜感激
答
我认为一个解决办法可能是以下几点:
for (i in unique(db$Product)) {
for (j in unique(db$Super)) {
for (c in unique(db$Category)) {
db$prueba <- lm(prueba ~ 0 + I(Super == j) *
(Time + I(Product == i))
+ I(Category == c) * Time
, db)$residuals
}
}
}
在T他的方式,数据库的结构没有改变。希望它是有用的。