如何将无结构语音转文字TXT转录文件读取到R并关联对应ID
R 读取无结构纯文本TXT并匹配ID的解决方案
核心逻辑
直接逐文件读取全部文本内容,提取文件名作为ID,最终拼接为两列结构化数据框,无需依赖结构化文本读取函数。
方案1:Base R 实现(无需安装额外包)
# 1. 获取目标文件夹下所有txt文件的全路径 txt_files <- list.files( path = "替换为你的TXT文件所在文件夹路径", pattern = "\\.txt$", # 仅匹配后缀为txt的文件 full.names = TRUE, # 返回完整路径而非仅文件名 ignore.case = TRUE # 忽略大小写,兼容.TXT后缀的文件 ) # 2. 逐文件读取文本、提取ID,拼接为数据框 result <- do.call(rbind, lapply(txt_files, function(f) { # 读取文本内容,多行文本自动拼接为单个字符串,关闭无行尾符警告 text_content <- paste(readLines(f, warn = FALSE), collapse = " ") # 提取ID:默认取不带后缀的文件名,如需提取文件名中的数字可替换为下行代码 # id <- gsub("\\D", "", basename(f)) id <- tools::file_path_sans_ext(basename(f)) return(data.frame(ID = id, Text = text_content, stringsAsFactors = FALSE)) })) # 如ID为数字格式,可手动转换类型 result$ID <- as.integer(result$ID)
方案2:Tidyverse 实现(代码更简洁)
library(tidyverse) result <- tibble( file_path = list.files( "替换为你的TXT文件所在文件夹路径", pattern = "\\.txt$", full.names = TRUE, ignore.case = TRUE ) ) %>% mutate( # 提取ID,需数字ID则替换为 str_extract(basename(file_path), "\\d+") ID = tools::file_path_sans_ext(basename(file_path)), # 逐文件读取文本内容 Text = map_chr(file_path, ~paste(readLines(.x, warn = FALSE), collapse = " ")) ) %>% # 保留需要的两列 select(ID, Text)
与独立ID CSV文件关联
读取你的ID对应CSV文件后,直接按ID字段关联即可:
# 读取你的ID对应CSV id_csv <- read.csv("替换为你的CSV文件路径") # Tidyverse 关联方式 final_data <- left_join(result, id_csv, by = "ID") # Base R 关联方式 # final_data <- merge(result, id_csv, by = "ID", all.x = TRUE)
特殊场景适配
如果你的TXT文件名为TextFile1.txt这类带前缀的格式,只需将ID提取逻辑替换为正则提取数字的代码,即可直接得到示例中的1、2、3格式的纯数字ID,无需额外处理。
内容的提问来源于stack exchange,提问作者Miki Parr
相关产品推荐
相关产品推荐

