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

如何在R中基于DataFrame匹配值批量重命名本地文件

R语言实现文件名匹配数据框值并重命名方案

首先你需要先构造文件名和salary的映射关系,再执行批量重命名,完整实现代码如下:

library(data.table)

# 第一步:构造匹配映射表
# 去掉employee列的空格,生成和无空格文件名对应的匹配键
df1[, match_name := gsub("\\s", "", employee)]
# 生成命名映射:键为匹配用的无空格姓名,值为对应salary
rename_map <- setNames(as.character(df1$salary), df1$match_name)

# 第二步:批量读取文件并重命名
# 替换为你的目标文件所在文件夹路径
target_dir <- "./"
# 读取目录下所有文件,如需限定仅处理txt文件,可添加参数 pattern = "\\.txt$"
file_list <- list.files(path = target_dir, full.names = F)

for (old_file in file_list) {
  # 提取无后缀的文件名用于匹配
  file_base <- tools::file_path_sans_ext(old_file)
  if (file_base %in% names(rename_map)) {
    # 保留原文件后缀(无后缀则直接用salary作为文件名)
    file_suffix <- tools::file_ext(old_file)
    new_file <- ifelse(file_suffix == "",
                       rename_map[file_base],
                       paste0(rename_map[file_base], ".", file_suffix))
    # 执行重命名
    file.rename(
      from = file.path(target_dir, old_file),
      to = file.path(target_dir, new_file)
    )
  }
}

注意事项

  • 重命名前可先注释掉file.rename代码段,添加print(paste(old_file, "->", new_file))核对匹配结果,确认无误后再执行重命名避免误操作
  • 如果你的文件存放在多层子目录下,可在list.files中添加参数recursive = T遍历所有子目录的文件
  • 代码默认保留原文件后缀,若不需要保留直接去掉后缀拼接逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:01