有没有办法循环遍历 r 中的线性模型的列名称(而不是数字)?

Bet*_*eth 3 loops for-loop r linear-regression anova

我有一个包含 40 个数据列(40 种不同的营养素)的数据表,还有用于绘图数字和因子的附加列。我想自动循环每个列名称并为每个列生成一个线性模型和摘要。数据列从第 10 列开始。

for(i in 10:ncol(df)) {       # for-loop over columns
  mod2<-aov(i~block+tillage*residue+Error(subblock),data=df)
  summary(mod2)
}
Run Code Online (Sandbox Code Playgroud)

目前,这正在产生错误Error in model.frame.default(formula = i ~ subblock, data = df, drop.unused.levels = TRUE) : variable lengths differ (found for 'subblock') Variable lengths are concent,所以我想我循环不正确。

数据如下所示(开头有更多分类列),营养成分列从第 10 列开始。

堵塞 耕作 残留物 子区块 营养素1 营养素2 ETC。
b1 新台币 NR s1 0.5 0.6

Rol*_*and 5

你不需要循环。您只需将矩阵传递给公式的 LHS:

dep <- names(iris)[names(iris) != "Species"]
f <- as.formula(sprintf("cbind(%s) ~ Species", paste(dep, collapse = ",")))

summary(lm(f, data = iris))
Run Code Online (Sandbox Code Playgroud)