如何将多个 R 模型的结果保存到 csv?

问题描述 投票:0回答:2

我能够使用下面的代码创建一个包含 12 个线性模型结果的小标题作为列表。这些是平均月流量 (MMF) 和流域面积 (DRAINAGE_AREA_GROSS) 之间的线性模型,输出可以在图中看到。

MMF_reggression <- flow_average %>% group_by(Month) %>%
 do(model = lm(MMF ~ DRAINAGE_AREA_GROSS, data = .))

我想将列表的系数导出到 CSV,但我在处理它们时遇到麻烦,因为它们在这个小标题中。

所以没有世界末日,但不想手动将它们放入 .csv 中。任何对此问题的解决方案将不胜感激。

tibble of lists

我无法让这样的方法发挥作用:

write.csv(coef(MMF_reggression[[,2]]), file = 'regionalregression.csv')

我可以将结果保存在文本文件中:

sink("model_summary.txt")
print(MMF_reggression[[2]])
sink()
r csv lm
2个回答
1
投票

如果

model
具有 coefficients 变量,则首先取消列出和汇总应该与 write.csv 一起使用。

write.csv(MMF_reggression %>% 
            rowwise() %>%
            summarize(unlist(model)["coefficients"]), 
  file = "regionalregression.csv")

0
投票

我建议

broom::tidy()
将您的结果转换为工作流程友好的格式。

library(tidyverse)
library(broom)
mtcars %>% group_by(cyl) %>%
 do(model = lm(hp ~ mpg, data = .)) %>%
 mutate(tbl = list(tidy(model))) %>%
 unnest(tbl) %>%
 select(-model)
# A tibble: 6 × 6
    cyl term        estimate std.error statistic p.value
  <dbl> <chr>          <dbl>     <dbl>     <dbl>   <dbl>
1     4 (Intercept)   147.       35.6      4.14  0.00252
2     4 mpg            -2.43      1.32    -1.84  0.0984 
3     6 (Intercept)   164.      147.       1.12  0.313  
4     6 mpg            -2.12      7.40    -0.286 0.786  
5     8 (Intercept)   294.       84.3      3.49  0.00445
6     8 mpg            -5.65      5.51    -1.02  0.326  

然后您可以

select()
选择要保留的任何列并将其写入 CSV。

我建议

lmList(hp~mpg|cyl, data = mtcars) |> broom.mixed::tidy()

但是

tidy
方法似乎被ATM机破坏了......???

© www.soinside.com 2019 - 2024. All rights reserved.