为什么光栅文件大小与对象大小相差如此之大?

Why is raster filesize is so much different than objectsize?

我的磁盘上有一个 1.2 GB 的 .csv 文件。我使用 Rfilename = read.csv(path) 函数,然后通过 object.size(filename) 检查对象大小,结果发现它有 3721MB 大。为什么会有这种差异?

CSV 文件是纯文本文件,可能如下所示:

1,2,3,4
3,2,3,2
3,4,2,1

每个字符(即数字和逗号)是一个字节。这个文件有 24 个字节大(每行末尾有一个不可见的 "new line" 字符)。

当读入R时,每个数字都存储为一个浮点十进制数,即8个字节。上面的文件将是 8*24(值)= 96 字节大。

可以反过来。如果上面的文件改为:

1.0000000000, 2.0000000000, 3.00000000000, 4.000000000
[etc]

然后在 CSV 中,每个数字占用大约 12 个字节——每个数字、小数点、命令和零占用一个字节——当读入 R 时,仍然只占用 8 个字节作为浮点十进制值。