R语言 读取tsv的三种方法 ,带有注释的tsv文件

下面给出 3 种在 R 里"跳过注释行(以 ## 开头)并读取真正列名在第 1 行"的通用做法,任选其一即可。

示例文件假设叫 demo.tsv,放在工作目录下,字段分隔符为 tab(\t)。


方案 1:readr::read_tsv + skip

(最简洁,tidyverse 用户首选)

r 复制代码
library(readr)

df <- read_tsv(
  "demo.tsv",
  skip = 6,            # 前 6 行全是注释,直接跳过
  locale = locale(encoding = "UTF-8")  # 如有中文可改 GB18030
)

head(df)

方案 2:data.table::fread + autostart

(速度最快,自动识别 tab 分隔)

r 复制代码
library(data.table)

df <- fread(
  "demo.tsv",
  autostart = 7L,      # fread 会自己从第 7 行开始找列名
  sep = "\t"
)

head(df)

方案 3:base::read.table + 文本预处理

(不依赖任何外部包,纯 base R)

r 复制代码
## 1. 先把注释行扔掉
con <- file("demo.tsv", open = "rt")
clean <- grep("^##", readLines(con), invert = TRUE, value = TRUE)
close(con)

## 2. 用 textConnection 把干净文本喂给 read.table
df <- read.table(
  text = clean,
  header = TRUE,
  sep = "\t",
  stringsAsFactors = FALSE,
  fileEncoding = "UTF-8"
)

head(df)

补充说明

  1. 如果注释行数不固定,可用 grep("^##", readLines()) 动态计算要跳过的行数。
  2. 文件若用 CRLF(Windows)换行,以上三种方法均能自动识别,无需额外处理。
  3. 读进来后 colnames(df) 就是
    "Transcription factor""Synonyms""Official Full Name"... 可直接使用。
相关推荐
小尧嵌入式15 小时前
深入理解C/C++指针
java·c语言·开发语言·c++·qt·音视频
Blessed_Li15 小时前
Linux系统安装FunASR详细教程
开发语言·funasr
fish_xk15 小时前
c++的字符串string
开发语言·c++
黄旺鑫15 小时前
Java后端接口字段命名转换:蛇形与驼峰式自动映射技术
java·开发语言·spring·下划线·驼峰
岁月蹉跎的一杯酒16 小时前
Cmake编译opecv c+报错
c语言·开发语言
Eiceblue16 小时前
通过 C# 将 RTF 文档转换为图片
开发语言·算法·c#
2301_7644413316 小时前
使用python构建的决策逻辑的图论
开发语言·python·图论
fruge16 小时前
深入理解 JavaScript 事件循环:宏任务与微任务的执行机制
开发语言·javascript·ecmascript
IT_Octopus16 小时前
java <T> 是什么?
java·开发语言
猿饵块16 小时前
c++17--std::owner_less
开发语言·c++