当我尝试将实际大小为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()
不确定这是什么意思。
答案 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。