【问题标题】:fread - skip lines starting with certain character - "#"fread - 跳过以特定字符开头的行 - “#”
【发布时间】:2013-09-26 01:52:51
【问题描述】:

我正在使用 R 中的 fread 函数将文件读取到 data.tables 对象中。

但是,在阅读文件时,我想跳过以 # 开头的行,这可能吗?

我在文档中找不到任何提及。

【问题讨论】:

标签: r data.table fread


【解决方案1】:

fread 可以从过滤掉此类行的管道命令中读取,如下所示:

fread("grep -v '^#' filename")

【讨论】:

    【解决方案2】:

    目前没有,但它在清单上。

    顶部的 # 行是否构成超过 30 行长的标题?

    如果是这样,那是以前提出的,解决方案是:

    fread("filename", autostart=60)
    

    其中 60 被选为要读取的数据块内。

    来自?fread

    一旦在行自动启动上找到分隔符,列数 决心,决意,决定。然后从自动启动向后搜索文件 直到找到没有该列数的行。因此, 找到第一个数据行,并且任何人类可读的横幅都是 自动跳过。此功能对于 加载一组可能并非全部大小一致的文件 横幅。设置 skip>0 通过设置覆盖此功能 autostart=skip+1 并关闭向上搜索。

    默认的autostart=30 在你的情况下可能只需要增加一点。

    或者skip=nskip="string" 有帮助:

    如果为 -1(默认),则使用下面描述的过程从在线自动启动开始查找第一个数据行。 skip>=0 表示忽略自动启动并将 line skip+1 作为第一个数据行(或根据 header="auto"|TRUE|FALSE 的列名称照常)。 skip="string" 在文件中搜索“string”(例如,列名行的子字符串)并从该行开始(受 gdata 包中的 read.xls 启发)。

    【讨论】:

    • 非常感谢,这有帮助。它们可能在文件中的任何地方,这有点奇怪,但我可能只是对其进行预处理,然后将其放入 R...
    • @Dnaiel 这确实很奇怪。文件格式是特定领域常用的吗?如果互联网上某处有示例文件?
    • 谢谢,它似乎不适用于我的文件,因为它也有不规则数量的列。 stackoverflow.com/questions/18597488/fill-option-for-fread
    • @Dnaiel 是的。我从来不知道这样的文件存在。您如何看待sep2 的想法?
    • 对我来说听起来不错。我现在所做的只是摆脱那些额外的列,所以我现在很好。
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 2017-09-20
    • 2023-03-27
    • 1970-01-01
    • 2011-07-26
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多