fread - 跳过以特定字符开头的行 - “#”

Posted

技术标签:

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

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

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

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

【问题讨论】:

相关GitHub Issue 856. 【参考方案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 这确实很奇怪。文件格式是特定领域常用的吗?如果互联网上某处有示例文件? 谢谢,它似乎不适用于我的文件,因为它也有不规则数量的列。 ***.com/questions/18597488/fill-option-for-fread @Dnaiel 是的。我从来不知道这样的文件存在。您如何看待sep2 的想法? 对我来说听起来不错。我现在所做的只是摆脱那些额外的列,所以我现在很好。

以上是关于fread - 跳过以特定字符开头的行 - “#”的主要内容,如果未能解决你的问题,请参考以下文章

显示字符串列以特定字母开头的行[重复]

sed:查找并替换以特定字符串开头的行中的第 n 个字符

如何避免以特定符号开头的行中字符串的文本突出显示[java]

R 使用 fread colClasses 或跳过参数来读取没有列标题的 csv

与 grepl 一起 fread

删除带有特定字符数的行