用R打开大文件

时间:2011-05-26 19:56:27

标签: r memory file-io memory-management

我想处理一个在R中包含100.000.000个数据集的文件(1.9GB)。 实际上我只想拥有每1000个数据集。 每个数据集包含3个列,由制表符分隔。 我试过:data< - read.delim(“file.txt”),但是R无法一次管理所有数据集。 我可以直接告诉R只加载文件中的每1000个数据集吗?

在阅读文件后,我想要将第2列的数据分类。 是否可以直接将第2列中的数字包装好? 是否有可能逐行读取文件,而不将整个文件加载到内存中?

感谢您的帮助。

斯文

3 个答案:

答案 0 :(得分:7)

在阅读R。

之前,您应该使用其他工具预处理文件

要将每第1000行写入新文件,您可以使用sed,如下所示:

sed -n '0~1000p' infile > outfile

然后将新文件读入R:

datasets <- read.table("outfile", sep = "\t", header = F)

答案 1 :(得分:6)

您可能需要查看专门针对R Data Import/Export手册

天真的方法总是加载所有数据。你不希望这样。您可能需要另一个逐行读取的脚本(用awk,perl,python,C,...编写)并且只发出每第N行。然后,您可以通过管道直接在R中读取该程序的输出 - 请参阅Connections上的帮助。

一般来说,非常大的内存设置需要对R有所了解。耐心一点,你会得到这个工作但是再一次,一个天真的方法需要大量的RAM和64位操作系统。

答案 2 :(得分:1)

也许包colbycol可能对您有用。