【问题标题】:Skip comment line in csv file using R使用R跳过csv文件中的注释行
【发布时间】:2015-02-10 13:51:15
【问题描述】:

我有一个 csv 文件,看起来像这样-

    #this is a dataset
    #this contains rows and columns

   ID     value1  value2   value3
   AA       5       6        5
   BB       8       2        9
   CC       3       5        2

我想阅读不包括那些注释行的 csv 文件。可以读到提到当它是“#”时跳过那些行。但这里的问题是 cmets 后面有一个空行,而且对于我的不同 csv 文件,它可以是不同数量的注释行。但主标题会总是从我想读取 csv 的“ID”开始。

有可能以某种方式指定从那里读取 ID 的时间吗?如果是,请举个例子。

提前致谢!!

【问题讨论】:

    标签: r csv


    【解决方案1】:

    使用comment.char option

    read.delim('filename', comment.char = '#')
    

    默认情况下会自动跳过空行 (blank.lines.skip = TRUE)。您还可以通过skip = number 指定要跳过的固定行数。但是,不可能指定它应该从以'ID' 开头的给定行开始读取(但就像我说过的,这里没有必要)。

    【讨论】:

    • 嗨,这个-comment.char = '#' 函数很好地删除了cmets。谢谢!但即使我使用“blank.lines.skip = TRUE”,它仍然在开头显示空行。对此有什么想法吗??
    • @jessy 看来这些行并不是真的空。使用您提供的示例文本,一旦我删除了行首的空格(我假设它们不在您的实际文件中,否则该函数根本不起作用),我的代码就可以工作。
    【解决方案2】:

    对于那些正在寻找tidyverse 方法的人来说,这将成为这份工作,类似于@Konrad Rudolph 的回答:

    readr::read_delim('filename', comment = '#')
    

    【讨论】:

      【解决方案3】:

      如果您事先知道标题之前的行数,则可以使用skip 选项(此处为3 行):

      read.table("myfile.csv",skip=3, header=T)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-01
        • 2013-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多