You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何R语言DataFrame的内存占用大小与其维度相关?

为什么R语言中DataFrame的内存占用和维度相关?

先看测试代码及结果:

> z <- matrix(runif(10000))
> data.frame(matrix(z, nrow=200) ) %>% object.size()
86608 bytes
> data.frame(matrix(z, nrow=20) ) %>% object.size()
140608 bytes

核心原因在于R中DataFrame本质是列向量的列表,每个列都带有额外的元数据开销(比如类型标记、属性信息等),而非像矩阵那样是连续存储的单一数据块。

具体到这个测试:

  • 矩阵设为200行时,对应列数为 10000/200 = 50 列
  • 矩阵设为20行时,对应列数为 10000/20 = 500 列

所有元素都是double类型,每个double占8字节,10000个元素的基础数据大小固定为 10000*8 = 80000 字节。两者的内存差异完全来自列的元数据开销:

  • 50列的总开销:86608 - 80000 = 6608 字节
  • 500列的总开销:140608 - 80000 = 60608 字节

列数越多,累加的元数据总开销就越大,最终导致DataFrame的内存占用显著上升。

简单总结:DataFrame的内存 = 元素本身的存储大小 + 每列的元数据开销总和。当总元素数固定时,列数越多,内存占用就越高。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:34:54