如何在R中将多个DataFrame写入Excel同一工作表而非多工作表?
解决R中合并多DataFrame并导出单工作表Excel的问题
核心问题是你每个DataFrame左侧的"非变量标签"(大概率是行名)未转为显式列,导致合并时丢失。以下是具体解决步骤:
1. 批量将行名转为显式列
先把每个DataFrame的行名提取为单独的列,确保这部分信息被保留。用purrr::map()批量处理列表中的所有DataFrame:
library(dplyr) library(purrr) # 假设results1是存储119个DataFrame的列表 results_clean <- map(results1, ~ rownames_to_column(.x, var = "row_label"))
这里var = "row_label"可以自定义列名,替换成你需要的名称即可。
2. 合并所有DataFrame
用bind_rows()合并处理后的列表,可选.id参数保留每个子DataFrame的来源标识(比如列表中的名字):
# 合并所有DataFrame,.id参数可选,用于标记数据来自哪个原始DataFrame combined_df <- bind_rows(results_clean, .id = "source_dataframe")
如果不需要来源标识,直接运行combined_df <- bind_rows(results_clean)即可。
3. 导出为单工作表Excel
现在合并后的combined_df是单个DataFrame,用write_xlsx()导出就是单工作表文件:
library(writexl) write_xlsx(combined_df, "hpresponse1.MinimallyAdjusted.xlsx")
如果你需要更多格式控制,也可以用openxlsx包的write.xlsx()函数。
额外检查
合并后可以用head(combined_df)或str(combined_df)确认数据结构,确保所有行名信息和原始数据都已保留。
内容的提问来源于stack exchange,提问作者stephr
相关产品推荐
相关产品推荐

