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

R中使用lapply读取多个文本文件并合并为单个数据框的问题

R语言批量合并txt文件提取指定列解决方案

注意事项

你现有代码存在两处可调整的点:

  • 匹配文件的正则写法不严谨,pattern = "*.txt"可能误命中文件名中间含txt的文件,改为pattern = "\\.txt$"可精准匹配后缀为.txt的文件
  • 你示例数据里的数值列列名为Inc,原代码里的df$IncLevelDifference是不存在的列,会返回空值,需替换为你实际的列名,按示例就是df$Inc

基础R方案(无需安装额外包)

直接将lapply返回的列表通过do.call(rbind, 列表对象)按行拼接即可得到总数据框:

files <- list.files(path = baseDir, pattern = "\\.txt$",full.names = TRUE,
                    recursive = FALSE)
df_list <- lapply(files, function(x){
  a = basename(x)
  a = gsub("\\.txt$","",a)
  df <- read.table(x, header = TRUE, sep ="\t")
  newDF <- data.frame(type = a, inc = df$Inc)
})
# 合并所有子数据框
final_df <- do.call(rbind, df_list)

得到的final_df就是你需要的总数据框,可直接在循环外调用。

tidyverse方案(代码更简洁)

如果使用purrr包的map_dfr函数,会自动按行合并所有返回的结果,无需手动拼接:

library(purrr)
library(readr)

files <- list.files(path = baseDir, pattern = "\\.txt$",full.names = TRUE,
                    recursive = FALSE)
final_df <- map_dfr(files, function(x){
  file_prefix <- gsub("\\.txt$", "", basename(x))
  df <- read_tsv(x, show_col_types = FALSE)
  return(data.frame(type = file_prefix, inc = df$Inc))
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:03