我首先要说的是我对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)
}
答案 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样本非常重要!