如何导出R中通过group_split拆分生成的全部dataframe?
R语言group_split拆分结果批量导出方案
group_split()返回的是由多个tibble组成的列表,你可以先给列表元素匹配对应的topic名称,再用循环或者purrr家族函数批量导出,以下是不同格式的导出方案:
前置准备(所有格式通用)
先给拆分后的列表匹配topic名称,避免导出的文件只有序号没有对应topic标识:
library(tidyverse) # 替换为你自己的原始数据框名和拆分代码 splitted_df <- 原始数据框 %>% group_split(topic) # 提取每个tibble对应的topic值作为列表名 topic_names <- 原始数据框 %>% distinct(topic) %>% pull(topic) %>% as.character() names(splitted_df) <- topic_names
1. 批量导出为CSV格式
无需额外安装依赖包,可直接实现:
# 方法1:用purrr::iwalk遍历导出 purrr::iwalk(splitted_df, ~ write.csv(.x, file = paste0(.y, "_文本分析结果.csv"), row.names = FALSE)) # 方法2:用for循环导出 for (i in seq_along(splitted_df)) { write.csv(splitted_df[[i]], file = paste0(names(splitted_df)[i], "_文本分析结果.csv"), row.names = FALSE) }
2. 批量导出为XLSX格式
使用无Java依赖的openxlsx包实现:
# 首次使用需先安装包 # install.packages("openxlsx") library(openxlsx) # 批量导出每个tibble为单独的xlsx文件 purrr::iwalk(splitted_df, ~ write.xlsx(.x, file = paste0(.y, "_文本分析结果.xlsx"), rowNames = FALSE)) # 若需把所有tibble导出到同一个Excel的不同工作表,可直接运行: write.xlsx(splitted_df, file = "全topic文本分析结果汇总.xlsx", rowNames = FALSE)
3. 批量导出为HTML格式
使用gt包生成可直接浏览的美观HTML表格:
# 首次使用需先安装包 # install.packages("gt") library(gt) purrr::iwalk(splitted_df, function(df, topic_name) { df %>% gt() %>% tab_header(title = paste0("主题", topic_name, "文本分析结果")) %>% gtsave(filename = paste0(topic_name, "_文本分析结果.html")) })
注意事项
- 所有导出文件默认保存在R的当前工作目录,可通过
getwd()查看当前存储路径,通过setwd("目标文件夹绝对路径")修改存储路径,也可直接在文件名参数中写入绝对路径 - 若topic名称包含/、\、:等系统文件名非法字符,建议先用
str_replace_all()处理后再作为文件名使用
内容的提问来源于stack exchange,提问作者Daniel Cunningham
相关产品推荐
相关产品推荐

