使用正则表达式在读取文件时跳过行

skip lines in reading files using reg ex

我有类似内容的文件

!software version: $Revision$
!date: 07/06/2016 $ 
!
! from Mouse Genome Database (MGD) & Gene Expression Database (GXD)
!
MGI

我正在使用 read.csv 读取文件。但是我需要跳过带有“!”的行在一开始的时候。我该怎么做?

read.csv 函数和它所基于的 read.table 有一个名为 comment.char 的参数,可用于指定一个字符,如果看到该字符,将忽略该行的其余部分.将其设置为“!”可能足以做你想做的事。

如果你真的需要正则表达式,那么最好的方法是使用readLines(或类似的函数)读取文件,然后将正则表达式应用于生成的字符串向量以删除不需要的字符串元素(行),然后将结果传递给 text 参数到 read.table(或使用文本连接)。

计算不以!

开头的第一行
to_skip <- min(grep('^[^!]', trimws(readLines('file.csv'))))

df <- read.csv('file.csv', skip = to_skip)