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

如何用tidyverse方法保存数据框列表为原文件名CSV文件

解决方案

问题出在你的df_list没有设置原始文件名作为列表元素的名称,所以imap中的.y默认取的是列表的索引序号(1、2...),而非文件名。以下是修正后的完整流程:

1. 修正文件读取代码(改用tidyverse风格)

用map读取文件,同时直接给列表设置原始文件名作为元素名称:

library(tidyverse)

# 获取所有CSV文件的完整路径
df_paths <- dir(pattern = "\\.csv$", full.names = TRUE)
# 提取纯文件名(去掉路径部分),作为列表元素的名称
df_names <- basename(df_paths)
# 读取所有文件并生成带名称的数据框列表
df_list <- map(df_paths, ~read_csv(.x, sep = ";")) %>% 
  set_names(df_names)

2. 导出CSV文件(保留原文件名)

直接用imap,此时.y会取到每个列表元素对应的原始文件名:

imap(df_list, ~write_csv(.x, path = .y))

如果你不想修改原读取代码

可以在保存前手动给df_list添加名称:

# 给已有的df_list设置文件名
names(df_list) <- basename(df)
# 再执行导出
imap(df_list, ~write_csv(.x, path = .y))

补充说明

  • basename()函数用于从完整路径中提取纯文件名(比如/data/file1.csv会变成file1.csv),如果需要保留完整路径作为输出路径,直接用df_paths作为列表名称即可。
  • 原读取代码中的seq_along(networks)是笔误,应该替换为seq_along(df),否则会报错。

内容的提问来源于stack exchange,提问作者Luiz Gabriel Ferreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:57:21