我正在编写一个多级回归模型,在该模型中,我从一个预测变量数据框(来自第一级的系数)和一个预测变量数据框开始第二个级别。两个数据框具有相同数量的观察值。我希望遍历预测变量(第一个数据帧中的列)并使用lm()
它们对预测变量的整个第二个数据帧进行回归。但是,当我这样做时,我得到一个我无法弄清楚的错误。
例子:
data(iris)
iris1 <- iris[-5] # remove the categories
iris2 <- iris[-5] * 6
for (col in names(iris1)) {
lm(iris1[col] ~ iris2)
}
## Error in model.frame.default(formula = iris1[col] ~ iris2, drop.unused.levels = TRUE) :
## invalid type (list) for variable 'iris1[col]'
我只是无法理解这意味着什么或为什么 R 认为iris1[col]
是list
. 为简单起见,我尝试合并它们:
for (col in names(iris1)) {
tmp_df <- cbind(iris1[col], iris2)
colnames(tmp_df) <- letters[1:5] # to avoid duplicate names
lm(1 ~ ., tmp_df)
}
## Error in model.frame.default(formula = 1 ~ ., data = tmp_df, drop.unused.levels = TRUE) :
## variable lengths differ (found for 'a')
这个特别令人沮丧,因为它们的长度显然相同。