You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R如何将多个dataframe分别导出为对应名称的独立Excel文件

R批量导出dataframe为同名Excel文件的修正方案

问题原因

你现有的代码只提取了符合规则的dataframe内容存入列表,丢失了dataframe的原始名称,循环时直接用索引值拼接文件名,所以输出的是数字命名的文件。

修正代码

版本1:简化循环写法

直接遍历dataframe名称向量,不需要提前把所有dataframe存入列表:

install.packages("writexl")
library(writexl)

# 提取所有名称匹配mydf规则的对象名
df_names <- ls(pattern = "mydf")

# 循环导出
for (name in df_names) {
  # get(name) 可以根据对象名字符串提取对应dataframe
  # paste0 无分隔符拼接文件名,避免出现多余空格
  write_xlsx(get(name), paste0(name, ".xlsx"))
}

版本2:保留列表存储的写法

如果需要先把所有dataframe存入列表做其他处理,可以给列表加上名称属性再导出:

install.packages("writexl")
library(writexl)

df_names <- ls(pattern = "mydf")
# 生成带名称的dataframe列表
list_of_dfs <- setNames(lapply(df_names, get), df_names)

# 批量导出
lapply(names(list_of_dfs), function(x) {
  write_xlsx(list_of_dfs[[x]], paste0(x, ".xlsx"))
})

注意事项

  • 用paste0代替默认带空格分隔的paste,避免文件名出现多余空格
  • 从列表中取单个dataframe要用双中括号[[,单中括号[返回的是子列表,可能导致导出错误
  • ls(pattern = "mydf")会匹配全局环境中所有名称包含mydf的对象,如果你有其他非dataframe对象也用了这个命名规则,可以提前过滤:
    # 只保留dataframe类型的对象名
    df_names <- df_names[sapply(df_names, function(x) is.data.frame(get(x)))]
    

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:54:01