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

如何在R-Markdown中为合并后的数据集添加原始.csv文件标识列?

解决方案

先修正你原代码里的几个小问题:

  • Sys.glob的括号位置错误,正确写法是Sys.glob("data*.csv")
  • lapply的参数顺序颠倒,需先传入文件名列表,再传读取函数
  • 变量名大小写不一致(dataFiles和datafiles),R是大小写敏感语言

下面是添加原始文件来源列的可行实现,核心逻辑是先获取所有匹配的文件名列表,读取每个文件时给数据集新增一列存储当前文件名,最后合并所有数据:

# 设置工作目录(替换为你的实际路径)
setwd("your_target_directory")

# 获取所有匹配"data*.csv"的文件名列表
file_list <- Sys.glob("data*.csv")

# 遍历读取每个文件,同时添加来源文件名列
dataFiles <- lapply(file_list, function(file) {
  # 读取当前csv文件
  df <- read.csv(file)
  # 新增一列,值为当前文件名(basename仅保留文件名,若要完整路径直接用file)
  df$source_file <- basename(file)
  # 返回处理后的数据集
  df
})

# 合并所有数据集
dataFilesCombined <- data.table::rbindlist(dataFiles)

如果你的文件体积较大,推荐用data.table的fread提升读取速度,代码可改为:

dataFiles <- lapply(file_list, function(file) {
  data.table::fread(file)[, source_file := basename(file)]
})
dataFilesCombined <- data.table::rbindlist(dataFiles)

关键说明

  • basename(file)会提取纯文件名(比如从./subfolder/data001.csv得到data001.csv),若需要保留完整文件路径,直接用file代替basename(file)即可
  • 该方案完全适配Sys.glob的文件名匹配规则,不管匹配到多少个文件都能自动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:10:50