【问题标题】:skip lines in reading files using reg ex使用正则表达式在读取文件时跳过行
【发布时间】:2016-07-26 17:02:26
【问题描述】:

我有类似内容的文件

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

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

【问题讨论】:

  • 您可以设置skip参数,但它只需要一个整数行即可跳过。如果您以编程方式或大量执行此操作,则可以使用 readLinesgrep 计算该数字,但除此之外,仅查看文件可能最简单。
  • 我有多个文件,所有文件都不一致。有时是 12,有时是 45。这就是为什么我不能使用 skip
  • 您可以使用来自this question 的答案之一来确定哪些行以! 开头,然后基于此使用read.csvskip 参数。

标签: r read.csv


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    要计算不以! 开头的第一行,

    to_skip <- min(grep('^[^!]', trimws(readLines('file.csv'))))
    
    df <- read.csv('file.csv', skip = to_skip)
    

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 2018-04-06
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多