存储 R 生成的大型结果的理想格式是啥?

Posted

技术标签:

【中文标题】存储 R 生成的大型结果的理想格式是啥?【英文标题】:What is the ideal format to store large results generated by R?存储 R 生成的大型结果的理想格式是什么? 【发布时间】:2012-06-14 23:10:55 【问题描述】:

我通过大量参数组合 (20-40k) 模拟合理大小的数据集 (10-20mb)。每个数据集 x 参数集通过mclapply 推送,结果是list,其中每个项目包含输出数据(作为列表项目 1)和用于生成该结果作为列表项目 2 的参数(其中该列表的每个元素是一个参数)。

我刚刚浏览了一个 81K 列表(但必须以 30k 块运行它们),结果列表每个大约 700 mb。我已将它们存储为.rdata 文件,但可能会将它们重新保存到.Rda。但是每个文件都需要永远读入R。这里是否有最佳实践,尤其是对于长期存储?

理想情况下,我会将所有内容都保存在一个列表中,但mclapply 会抛出一个关于无法序列化向量的错误,并且这么大的工作将永远在集群上花费(分成 3 种方式,每个工作需要 3 小时)。但是有几个结果文件results1a.rdataresults2b.rdataresults3c.rdata 也似乎效率低下。

【问题讨论】:

【参考方案1】:

听起来您有几个不同的问题——我建议您在单独的问题中询问有关优化列表格式的问题。

但是,关于将 R 数据读/写到磁盘,我不确定在效率方面是否有比 Rda 文件更好的方法。 然而,我发现压缩级别可能会对读取/写入这些文件所需的时间产生实际影响,具体取决于计算设置。我通常发现在不使用压缩的情况下可以获得最佳性能 (save(x,file="y.Rda", compress=FALSE))。

作为备用计划,您可以尝试保持压缩状态,但也可以改变压缩级别。

【讨论】:

另一个选项是saveRDS,它允许您使用不同的名称恢复对象。

以上是关于存储 R 生成的大型结果的理想格式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

JPA:迭代大型结果集的正确模式是啥?

具有 Flux 架构的 ReactJS 生成大型 JS 文件,最佳实践是啥?

(预)处理存储在 json 中的大型数据集的最有效方法是啥?

大型稀疏矩阵分解

在 Excel 中筛选大型列表的最佳方法是啥?

对于 R 中的大型必要循环,“while 循环”是不是应该优于“for 循环”?