为变量中的每个因子拟合线性模型

时间:2018-01-28 18:48:11

标签: r loops lm factors

我首先要说的是我对R很新,并且在陡峭的学习曲线上有点磕磕绊绊。我有一个包含一系列与森林组成有关的测量数据的数据框。我想为其中一个变量中包含的每个独特树种拟合线性模型,但一直在努力实现这一目标。我在python中有一些背景,我的直觉告诉我使用for循环,但这可能是R中的错误方法。任何帮助都要提前感谢。我提供了我目前的代码方法。

for (species in TreeData$SPECIES){
  CurrSpecies <- lm(GROWTH ~ DBH + TOTAL_HGT + BASTAND + BAHW + 
BA_UPPER + BA_MAX + GDD + PCP + TREE_STATU, 
data = TreeData, subset = SPECIES_CO == species)
  path <- paste(".../SUMMARY_", species, ".csv")
  write(capture.output(summary(CurrSpecies)), file = path)
}

1 个答案:

答案 0 :(得分:0)

使用您的策略提取系数表的一种方法是这样的,使用(内置)iris数据集作为示例:

for (species in unique(iris$Species)){
  data <- iris[iris$Species==species, ]
  outname <- paste0("output_folder/", species, ".csv")
  fit <- lm(data[["Sepal.Length"]] ~ data[["Sepal.Width"]])
  fit_coefs <- as.data.frame(summary(fit)$coefficients)
  write.csv(fit_coefs, outname)
}

同时查看broom::包,这使得此类任务更快,更一致。

如果您需要摘要的其他部分,您可以使用提取和重新组织摘要对象summary(fit)的不同部分。

重要提示:在原帖中加入TreeData df样本非常重要!