为什么读入变量比R中的文件存储大小消耗更多的内存

时间:2013-01-31 21:23:09

标签: r memory read.table

当我尝试将实际大小为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行。

运行enter image description here

之前和之后的

gc()

不确定这是什么意思。

1 个答案:

答案 0 :(得分:6)

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

文本文件中的每个字符都是1个字节。 R以4个字节存储整数(参见?integer)。这意味着你的文件包含〜336MB的"\t"和〜336MB的整数存储为1字节字符。

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