2013-01-15 25 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