r-比相应的.RData文件大得多的对象.为什么?你能手动做吗



我创建了一个data.table(类似于data.frame——请参阅下面的注释)对象,它大约等于11MB(我使用object.size()函数找到了它的大小)。

当我使用save()函数将该文件保存到磁盘时,生成的文件大小等于736KB。

(1) 这怎么可能?

(2) 是否可以手动使用write.bin()功能?

data.table有121328行和13列。列的数据类型为

  1. 日期(2列)
  2. 字符(5列)
  3. 整数(3列)
  4. 数字(3列)

data.table的前五行是以下

          date     time QTind OPRAseqNum OEC OCC   Bid BidSize   Ask AskSize type expiration strike
 1: 2005-01-03 09:30:24     Q      94698   C     707.2       1 710.2       1    C 2006-06-17    500
 2: 2005-01-03 09:30:24     Q      94946   C     707.2       1 710.2       1    C 2006-06-17    500
 3: 2005-01-03 09:30:24     Q      94948   C     707.0       1 710.0       1    C 2006-06-17    500
 4: 2005-01-03 09:30:24     Q      94950   C     707.0       1 710.0       1    C 2006-06-17    500
 5: 2005-01-03 09:30:26     Q      98083   C     707.2       1 710.2       1    C 2006-06-17    500

RAM中的对象未被压缩;写入磁盘的文件为。这就是大小差异的原因。据我所知,在R.中不可能对压缩对象执行操作

有一个手动的"解决方案",但你可能不会喜欢。你可以把你的数据表分成更小的块,压缩到磁盘上。然后,如果你想对整张表进行操作,你可以取消一个块,进行操作,然后重新压缩它。当然,这会显著影响性能。如果你想要整列的平均值,也会有一些额外的工作。

或者,更灵活一点的是,要获得柱状存储(如果您更经常对获得某些列而不是某些行感兴趣),请查看CRAN上的saves包,但作者认为它是实验性的或其他磁盘支持的柱状数据存储。

然而,这两种选择最终都会在RAM中产生一个未压缩的表(在某个点或另一个点),它们只是减少了您必须引入的表的数量。

相关内容

  • 没有找到相关文章

最新更新