如何导出嵌套回归输出
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
遍历数据帧列表,应用 lm
,set_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 的使用方法,那么应该可以使上述代码适应您的工作流程。
我刚刚开始使用 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
遍历数据帧列表,应用 lm
,set_names
给出列表元素名称(sheet 名称所必需),write_xlsx
将命名的数据帧列表转换为具有三个 sheets:
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 的使用方法,那么应该可以使上述代码适应您的工作流程。