在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他的方式,数据库的结构没有改变。希望它是有用的。