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

匹配目录txt文件名与R dataframe列值并插入对应内容至匹配文件

实现思路
  • 第一步:读取目标文件夹下所有txt文件,提取去掉后缀的文件名存入匹配列表
  • 第二步:遍历数据框每一行,过滤出存在对应文件的记录
  • 第三步:对匹配到的文件,读取原始内容后追加对应行的第二、第三列的列名和取值,重新写入文件即可
完整R代码
# 按需加载tidyverse包,也可以用base R实现
library(tidyverse)

# ---------- 配置参数 ---------------
# 替换为你的txt文件所在的文件夹实际路径
txt_folder <- "C:/xxx/your_txt_folder"
# 替换为你的数据框对象名,默认数据框第一列为匹配字段,第二、第三列为要追加的字段
df <- your_dataframe_name 

# ---------- 匹配处理逻辑 -----------
# 获取文件夹内所有txt文件,提取无后缀的文件名
all_txt <- list.files(path = txt_folder, pattern = "\\.txt$", full.names = F)
match_names <- str_remove(all_txt, "\\.txt$")

# 遍历数据框每行做匹配处理
for (row in 1:nrow(df)) {
  current_key <- df[[1]][row]
  # 仅处理存在对应txt文件的行
  if (current_key %in% match_names) {
    target_path <- file.path(txt_folder, paste0(current_key, ".txt"))
    # 读取原txt内容,可根据原文件的分隔符修改sep参数,制表符为"\t"、空格为" "、逗号为","
    original_data <- read.delim(target_path, sep = "\t", header = T, stringsAsFactors = F)
    # 追加两列新字段
    original_data[[names(df)[2]]] <- df[[2]][row]
    original_data[[names(df)[3]]] <- df[[3]][row]
    # 覆写原文件,建议运行前先备份所有原始txt文件避免数据丢失
    write.delim(original_data, target_path, sep = "\t", row.names = F, quote = F)
  }
}
注意事项
  • 运行代码前务必先备份所有原始txt文件,避免误操作导致数据损坏
  • 如果原txt文件没有表头,需要把read.delim的header参数改为F,并手动处理表头追加逻辑
  • 代码默认按列位置取第二、第三列,不需要修改数据框原有列名即可直接运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:54:02