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

求教:如何在R中按规则跳过不同行数读取多文件夹下的TXT文件

解决方案:动态跳过前置行读取多TXT文件

核心思路

先定位每个文件中*/的行号,从该行的下一行开始读取数据;同时统一温度列的名称,适配不同文件的列名、列数及顺序差异。

具体代码实现

步骤1:加载依赖包

library(tidyverse)

步骤2:定义单文件读取函数

read_custom_txt <- function(file_path) {
  # 读取文件所有行,定位*/所在的最后一行
  all_lines <- readLines(file_path)
  end_comment_line <- max(which(str_detect(all_lines, "\\*/")))
  
  # 从注释结束的下一行读取数据,识别表头
  df <- read.table(file_path, skip = end_comment_line, header = TRUE, stringsAsFactors = FALSE)
  
  # 统一温度列名称:匹配含"Temp"的列(忽略大小写),重命名为temperature
  temp_col_index <- grep("Temp", names(df), ignore.case = TRUE)
  if (length(temp_col_index) > 0) {
    names(df)[temp_col_index] <- "temperature"
  }
  
  return(df)
}

步骤3:批量读取多文件夹内的TXT文件

# 替换为你的根文件夹路径,递归遍历所有子文件夹的TXT文件
txt_files <- list.files(path = "你的根文件夹路径", pattern = "\\.txt$", recursive = TRUE, full.names = TRUE)

# 批量读取并合并所有数据(若需保留单个文件数据,改用lapply)
all_merged_data <- map_dfr(txt_files, read_custom_txt, .id = "file_source")

代码说明

  • 用readLines+str_detect精准定位注释结束行,避免固定skip值的局限性;
  • 自动识别表头,适配不同文件的列数与列顺序;
  • 通过模糊匹配温度列名并统一重命名,确保所有文件的温度列名称一致;
  • list.files(recursive = TRUE)会遍历所有子文件夹的TXT文件,map_dfr将数据合并为单个数据框并保留文件来源信息。

内容的提问来源于stack exchange,提问作者Alexia k Boston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:22:59