2012-09-25 42 views
0

1)我打開RGui,然後輸入require(ff),然後在RConsole中不輸入任何內容,我檢查Windows Task Manager --> Processes --> RGui.exe並查看內存分配~30,000Kff對象佔用全部內存?

2)我回到RConsole。我輸入Data <- read.csv.ffdf(file="filename.csv",row.names=1)。這個.csv文件大約是30MB。

3)計算機加載數據,並且我在加載時將內存分配視爲Rgui.exe。內存大大增加,以131,436K和徘徊在那裏,直到.csv文件完成導入到R.

(不是之前!)這一切,我會去

> object.size(Data) 
    34510880 bytes 

這證實它在我的記憶中。

這個問題也可以找到here,但唯一的答案的要求是,object.size的呼籲是把它放到記憶中。但是我做了object.size之後我目睹了我的記憶充滿了這個對象。此外,在調用object.size時,ZERO滯後,所以我的計算機不可能將30MB瞬間放入我的內存中,並且延遲爲0。將30MB .csv加載到內存需要60秒!

回答

2

一個30 MB的csv文件應該沒有問題讀入R而不使用ffdf。你可能有很多的列,這與ffdf不太匹配。下面的示例運行正常,並且不使用的內存,你說量:

spam = as.data.frame(matrix(runif(10e7), 1000, 2500)) # 76 mb 
write.table(spam, file = "spam.csv", sep = ",") 
spam2 = read.table("spam.csv", sep = ",") 

ffdf設計有非常大的CSV文件(>> 30 MB)與列的數量有限的工作。在這種情況下,我看不到有任何理由使用ffdf。如果你想加載速度更快,只需使用save保存該對象,該對象以二進制格式保存,然後使用load再次加載。