2013-01-15 23 views
4

我在一个泡菜里试图将几个文件连接到一个主文件中。有5个结构相同的文件,我可以单独将每个文件读入数据帧中,而不会出现问题。我甚至手动设置了200多个变量的列类,而不是让R决定,因为我相信这是造成这个问题的原因。但是,将任何两个文件附加在一起会导致内存不足。用rbind附加数据框的神秘问题

警告消息: 1:在rbind(deparse.level,...): 已达到4043Mb的总分配:见帮助(memory.size)

所以我做了一些试验: 我一起加入了两个不同的文件块1。这样可行。 我将文件2的块加入到文件1的块中。 我加入了一个文件2的块到原始文件1。

这些文件中的每一个都在200MB以下,因此我不确定应该是内存不足。如果有人有兴趣,数据来自hearstchallenge.com。竞争已久,我们只是将数据用于分析实验(而不是编程!)。

有关如何解决此问题的任何建议?

+3

+1对于“咸菜的稀释”。您遇到的问题是R需要4043个连续的内存MB才能完成操作。而且我认为你没有太多的余地。您可以尝试使用像sed这样的命令行工具来加入R之外的文件,或者像ff这样的大数据包之一。 – Justin

+1

'write.table'也有一个'append'选项。 –

+0

@Oliver我认为你是在32位机器上? –

回答

0

我遇到过类似的问题。解决方案是不要在大数据上使用rbind()或cbind()。他们倾向于泄漏记忆。

要仅使用R来解决您的问题,请首先创建数据框在您将这些零件放在一起后所具有的尺寸的数据框。然后使用分配来填充大数据框。

+0

对于大数据,请不要使用data.frames,使用data.tables。 – mnel