1)我打开RGui,然后输入require(ff)
,然后在RConsole中不再输入任何内容,我检查Windows Task Manager --> Processes --> RGui.exe
并查看~30,000K
的内存分配
2)我回到RConsole。我输入Data <- read.csv.ffdf(file="filename.csv",row.names=1)
。这个.csv文件大约是30MB。
3)计算机加载数据,并在加载时将内存分配用于Rgui.exe
。内存大幅增加到131,436K
并在那里盘旋,直到.csv文件完成导入R.
AFTER (不是之前!)所有这些,我会去
> object.size(Data)
34510880 bytes
确认它在我的记忆中。
此问题也在here找到,但唯一答案中的声明是对object.size
的调用将其置于内存中。然而,在我目睹我的记忆充满了这个物体之后,我做object.size
。另外,在调用object.size时会出现ZERO延迟,所以我的计算机不可能只是在0滞后的情况下瞬间将30MB放入我的内存中。将30MB .csv加载到内存中需要60秒!
答案 0 :(得分:2)
在不使用ffdf的情况下读入R应该是一个30 Mb的csv文件。你可能有很多专栏,这对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文件(>&gt;> 30 mb)。在这种情况下,我认为没有任何理由使用ffdf
。如果您想加快加载速度,只需使用保存为二进制格式的save
保存对象,然后使用load
再次加载。