【问题标题】:How to use read.csv to read only those lines that matche with some regular expression?如何使用 read.csv 仅读取与某些正则表达式匹配的行?
【发布时间】:2014-10-12 05:29:58
【问题描述】:

我想在R 中使用read.csv 读取一个大文件。现在获取与某些模式匹配的行的一种方法是首先获取data-frame 中的所有行,然后仅过滤所需的行。这种方法的问题是文件太大,在某些机器上,所有数据可能无法放入内存中。那么有什么方法可以使用grep 或类似的东西以及read.csv 来只获取几行感兴趣的行吗?

【问题讨论】:

  • 您可以在外壳/终端中使用grep(或awk)过滤掉某些行,发送到一个新文件,然后将该文件读入R。否则您可以读取数据in by chunks 然后过滤块
  • 感谢您的帮助@RichardScriven。我正在寻找R 中是否有任何可用的东西,可以使用read.csvregex 或类似的东西。
  • 您可以使用来自data.table 的带有fread 的shell 命令。参见例如以stackoverflow.com/questions/22229109/… 为例。

标签: r regex csv


【解决方案1】:

您不能为此目的使用read.table 及其派生词。但是,您可以使用readLines 以块的形式读取数据,并将正则表达式应用于对应于一行的每个元素。

另一种选择是使用类似数据库的框架。 Package sqldf 可以将 csv 文件读入 SQL 数据库。您可以使用 SQL 查询来仅读取所需的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2021-04-13
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多