如何导出嵌套回归输出

How to export a nested regression output

我刚刚开始使用 map 和 broom 创建嵌套回归输出,如下所示:

  Source | Results
   <chr> |   <list>
    A    | <tibble [29 x 5]>
    B    | <tibble [29 x 5]>
    C    | <tibble [29 x 5]>
    D    | <tibble [29 x 5]>
    E    | <tibble [29 x 5]>

我想将每个源导出到单独的 excel sheet(在同一个工作簿中)。

我通常像这样使用 xlsx 包的 for 循环:

x <- example
for (i in x) {
  Models[[i]] <- dt[,as.list(summary(lm(.SD[[i]] ~ .SD$example 
                                           )))]
}    
Models <- lapply(Models,function(z) z$coefficients)        
    wb <- createWorkbook()
        sheet <- list()
        for (i in x) {
          sheet[[i]] <- createSheet(wb, sheetName = i)
          addDataFrame(Models[[i]], sheet[[i]],startColumn = 1, startRow = 1, row.names = TRUE,col.names = TRUE)
        }
        saveWorkbook(wb,'example.xlsx')

是否有其他方法可以整洁地完成此操作?

从头到尾看起来可能如下所示。使用 iris 数据集,group_split 通过 Species 将数据分成三个数据帧,map 遍历数据帧列表,应用 lmset_names 给出列表元素名称(sheet 名称所必需),write_xlsx 将命名的数据帧列表转换为具有三个 sheets:

的 XLSX
library(dplyr)   # for group_split
library(purrr)   # for map and set_names
library(broom)   # for augment
library(writexl) # for write_xlsx


group_split(iris, Species) %>% 
    map(~ lm(Sepal.Width ~ Sepal.Length, .) %>% augment) %>% 
    set_names(unique(iris$Species)) %>% 
    write_xlsx("iris.xlsx")

请原谅我没有使用 xlsx 包。我通常花更多的时间尝试让 rJava 工作,而不是使用包本身,所以我改用 writexl,这也很好。如果您了解 xlsx 的使用方法,那么应该可以使上述代码适应您的工作流程。