如何通过基于R中的条件过滤行来读取文件

Anu*_*pta 3 r read.csv

我正在使用 R 读取 csv。但我不希望整个数据集都在内存中,因为数据集太大。我需要根据一列的类别读取行。

我只想读取 col2 = 'A' 的行

示例: col1 col2 col3
1 A 1000
2 B 2000
3 A 1000
4 A 2000
5 A 1000
6 B 2000

Sev*_*eux 7

您可以尝试使用fread带有选项data.table的包cmd。来自文档:

预处理文件的 shell 命令;例如 fread(cmd=paste("grep",word,"filename")。查看详细信息。

外壳命令:

为了方便起见,fread 接受 shell 命令。运行输入命令,并将其输出写入 tmpdir(默认为 link{tempdir}())中的文件,fread 将“正常”应用到该文件。详细信息与平台相关——系统用于 UNIX 环境,否则使用 shell;见系统。

所以如果你运行类似的东西

library(data.table)
t <- fread(......., cmd=paste("grep","' A '","filename"), .....)
Run Code Online (Sandbox Code Playgroud)

然后它过滤包含A(A 被空格包围)的行,然后应用于fread结果。