1

当我尝试将一个实际大小为 672MB 的大文件读入 R 时,结果发现系统内存使用量从 0.98 G 激增至 3.6 G(我使用的是 4 GB 内存桌面)。这意味着将文件存储到内存中需要数倍的空间,并且在我读入内存不足后我无法进行任何计算。这正常吗?我使用的代码:a=read.table(file.choose(),header=T,colClasses="integer",nrows=16777777,comment.char="",sep="\t") 该文件包含 167772XX 行。

gc() 在我跑步之前和之后在此处输入图像描述

不知道这是什么意思。

4

1 回答 1

6

您的文本文件为 672MB。假设你所有的整数都是 1 位,那么你的 R 对象大约是 2*672MB 是完全合理的。

文本文件中的每个字符为 1 个字节。R 将整数存储在 4 个字节中(请参阅 参考资料?integer)。这意味着您的文件包含"\t"存储为 1 字节字符的 ~336MB 和 ~336MB 整数。

R 读取这些 1 字节字符,将它们存储为 4 字节整数和... 336*4 = 1344MB。输出的第二行和第二列gc读取 1345.6,等于 1344MB + 原始 1.6MB。

于 2013-01-31T23:04:15.813 回答