18

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

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

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

4

2 回答 2

17

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

fread("grep -v '^#' filename")
于 2016-02-20T00:46:15.123 回答
13

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

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

如果是这样,那之前就出现过,解决方案是:

fread("filename", autostart=60)

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

来自?fread

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

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

或者也许skip=n或有skip="string"帮助:

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

于 2013-09-20T17:11:47.173 回答