R 从文件中提取数据-忽略前导注释行,但包括后面以开头的行#
我有一个文本文件,它总是有一个标题(行首不带“#”)。标题前可能有一些行,每行开头都有“#”。数据中可能有一些以“#”开头的行 我需要在头之前识别这些“#”符号行,并在读取文件之前跳过它们 资料 我想跳过4行并读取带有标题的文件 我试过了R 从文件中提取数据-忽略前导注释行,但包括后面以开头的行#,r,R,我有一个文本文件,它总是有一个标题(行首不带“#”)。标题前可能有一些行,每行开头都有“#”。数据中可能有一些以“#”开头的行 我需要在头之前识别这些“#”符号行,并在读取文件之前跳过它们 资料 我想跳过4行并读取带有标题的文件 我试过了 dum.data使用rle和diff检查前导注释行。仅删除第一个组,并且仅当它位于任何非注释行之前时: r <- rle(diff(grep('^#', dum.data))) dum.data <- if (length(r$values) &a
dum.data使用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"
r这真的很有帮助,但我一直在寻找一种方法来查找要跳过的行数,因为这是一个大脚本中的一个小修改,它从标题读取信息。我不想在这方面做更多的改变。知道跳过行将非常有用在length(r$values)和&r$values[1]==1
的情况下,要跳过的行数是-(r$length[1]+1)
,否则不跳过。
dum.data<-readLines(filename)
top<-"^#"
if(grepl((top,dum.data[1])){
ret <- grep(top,dum.data)
}
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"