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

lol*_*ity 1 memory r 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行.

我跑前后的gc() 在此输入图像描述

不确定这是什么意思.

Jos*_*ich 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.