0

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。

之后(不是之前!)所有这一切,我会去

 > object.size(Data)
  34510880 bytes

这证实了它在我的记忆中。

这个问题也在这里找到,但唯一答案中的声明是调用object.size将其放入内存中。但是,在object.size我见证我的记忆被这个物体填满之后,我会这样做。此外,在调用 object.size 时存在零延迟,因此我的计算机不可能以 0 延迟瞬间将 30MB 放入我的内存中。将 30MB .csv 加载到内存中大约需要 60 秒!

4

1 回答 1

2

一个 30 Mb 的 csv 文件在不使用 ffdf 的情况下读入 R 应该没有问题。您可能有很多列,这与 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. 如果您想更快地加载,只需使用savewhich 以二进制格式保存对象,然后使用load.

于 2012-09-25T07:22:01.167 回答