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

如何在R中使用read.table读取文件时直接提取文件名生成新列

无需外部文件名向量实现自动提取文件名作为新列

单个文件的处理方法

直接将文件路径定义为变量,读取时通过basename()提取纯文件名,再用str_extract匹配需要的部分:

library(tidyverse)

# 先定义文件路径
file_path <- "[MYPATH]/Mon1_2016-10-06_@exyz66698.txt"

# 读取文件并自动生成Rec列
df <- read.table(file_path, 
                 comment.char = "", header = FALSE, quote="", sep="\t", 
                 stringsAsFactors = F, encoding = "UTF-8") %>%
  mutate(Rec = str_extract(basename(file_path), ".*\\d"))

basename(file_path)会自动剥离路径前缀,只保留文件名(比如把[MYPATH]/xxx.txt变成xxx.txt),再用你原有的正则.*\\d提取到最后一位数字为止的内容。

批量处理多个文件的方法

如果要读取文件夹下多个同类型文件,每个文件自动对应自己的Rec值,可以用map_df批量处理:

library(tidyverse)

# 获取目标文件夹下所有txt文件的完整路径
file_paths <- list.files("[MYPATH]", pattern = "\\.txt$", full.names = TRUE)

# 批量读取并为每个文件添加对应的Rec列
df_all <- map_df(file_paths, function(path) {
  read.table(path, 
             comment.char = "", header = FALSE, quote="", sep="\t", 
             stringsAsFactors = F, encoding = "UTF-8") %>%
    mutate(Rec = str_extract(basename(path), ".*\\d"))
})

这样每个文件的所有行都会带上从自身文件名提取的Rec值,完全不需要提前准备外部文件名向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:16:10