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

R读取txt文件时如何避免首行数据被自动识别为列名?

问题原因
  • read_tsv()默认参数col_names = TRUE,会自动将读取内容的第一行识别为列名。你手上的txt文件全是数值数据、没有专门的表头行,才会出现首行数据被识别为列名、不同文件首行数值不同导致列名混乱、30行数据仅读出29行的问题。
  • 读取结果仅显示1列,是因为read_tsv只适配制表符(tab)分隔的文本文件,你的txt实际列分隔符和tab不匹配,程序就会把整行内容识别为单列。
修正方案

读取文件时显式声明文件无表头,同时匹配txt实际的列分隔符即可,修正后可运行代码如下:

setwd("U:\\filepath")
library(readr)
library(dplyr)

# 增加full.names = TRUE参数避免工作目录路径识别异常
file.list <- list.files(pattern='*.txt', full.names = TRUE)

# 读取时必须加col_names = FALSE声明文件无表头,同时匹配对应分隔符的读取函数
df.list <- lapply(file.list, function(file_path){
  # 以下三种读取方式按你txt的实际分隔符选一个启用,注释掉另外两个即可
  # 1. 制表符(tab)分隔的文件用这个
  # read_tsv(file_path, col_names = FALSE)
  # 2. 单空格/多空格分隔的文件用这个(多数导出的纯数值txt是这种格式)
  read_table(file_path, col_names = FALSE)
  # 3. 逗号分隔的文件用这个
  # read_csv(file_path, col_names = FALSE)
})

# 所有文件列名统一后直接合并即可,不会出现列名不匹配的问题
combined_df <- bind_rows(df.list)

# 结果校验:如果一共有N个txt文件,合并后应该为30*N行、3列
dim(combined_df)

读取完成后如果需要修改列名,直接运行colnames(combined_df) <- c("你的第一列名", "你的第二列名", "你的第三列名")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:24:15