选择数据框的不同列以在 R 中的 for 循环中运行方差分析



我正在尝试为名为 MegaData 的数据框中的二项分布数据运行方差分析,该数据框的前 4 列是具有单位、年份和物种的分类变量。下面是我的 R 代码,当我尝试遍历数据框的不同列以运行我的模型时,它不起作用。

mod <- list()
for (i in MegaData[,5:36]) {
  for(j in length(MegaData[,5:36])){
    mod[[j]] <- glm(i/number ~ Unit*BeginYear*species_raw,
    family = binomial(link = logit), weight=number, 
    data = MegaData)
    print(anova(mod[[j]]), test="Chisq")
    print(summary(mod[[j]]))
  }
}

如果您尝试在 5:36 中为每列训练一个模型,获取拟合模型列表并打印出每个模型的摘要,您可以尝试:

mod <- list()
for (j in 5:36) {
  mod[[j]] <- glm(paste0(names(MegaData)[j], "/number~Unit*BeginYear*species_raw"),
                  family = binomial(link = logit), weight=number, data = MegaData)
  print(anova(mod[[j]]), test="Chisq")
  print(summary(mod[[j]]))
}

数据:

set.seed(144)
MegaData <- data.frame(number=sample(1001:2000, 1000, replace=TRUE), Unit=sample(1:10, 1000, replace=TRUE), BeginYear=sample(2000:2010, 1000, replace=TRUE), species_raw=sample(letters[1:3], 1000, replace=TRUE))
for (i in 1:32) {MegaData[[paste0("dat", i)]] <- sample(1:1000, 1000, replace=TRUE)}

最新更新