我有一个文本文件,它总是有一个标题(在行的开头没有“#”)。标题之前可能有一些行,每行的开头都有“#”。数据中可能有一些行,也以“#”
开头我需要在标题之前标识这些“#”符号行,并在读取文件之前跳过它们。
数据
#version 2.4
##
## Oncotator v1.0.0.0rc16| Gaf 3.0 | UniProt_AAxform 2011_09
## OxoG Filter v3
Hugo_Symbol Entrez_Gene_Id
BAGE1 0
BAGE1 0
#errt 23
RTRRT 23
我想跳过4行并用标题读取文件 我试过了
dum.data<-readLines(filename)
top<-"^#"
if(grepl((top,dum.data[1])){
ret <- grep(top,dum.data)
}
但在这种情况下,我需要在标题之前仅识别“#”行(如果有的话)。不在数据之间。
答案 0 :(得分:2)
使用rle
和diff
检查主要评论专线。仅删除第一个组,并且仅当它位于任何非注释行之前时:
r <- rle(diff(grep('^#', dum.data)))
dum.data <- if (length(r$values) && r$values[1] == 1) tail(dum.data, -(r$lengths[1]+1)) else dum.data
dum.data
## [1] "Hugo_Symbol Entrez_Gene_Id"
## [2] "BAGE1 0"
## [3] "BAGE1 0"
## [4] "#errt 23"
## [5] "RTRRT 23"
然后使用它初始化textConnection
并阅读表格。