2012-09-25 121 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再次加载。