【问题标题】:R needs several hours to save very small objects. Why?R 需要几个小时来保存非常小的对象。为什么?
【发布时间】:2022-11-20 01:21:36
【问题描述】:

我在 R 中运行多个计算和 ML 算法,并将它们的结果存储在四个不同的表中。 对于每个计算,我获得四个表,我将它们存储在一个列表中。 根据 R,我的所有列表都在 RStudio 的右上象限中标记为“大列表(4 个元素,971.2 kB)”,其中显示了我所有的对象、函数等。 我有五个这样的列表,并保存它们供以后使用 save() 函数使用。

我使用的功能:

save(list1, list2, list3, list4, list5, file="mypath/mylists.RData")

出于某种我不明白的原因,R 需要超过 24 小时才能保存这四个列表,每个列表只有 971.2 kB。 也许,我应该补充一点,显然当时 R 使用了超过 10GB 的 RAM。但是,列表和我上面指出的一样小。

有谁知道为什么将列表保存到我的硬盘需要这么长时间以及我能做些什么?

谢谢

【问题讨论】:

  • 也许只是您的文件路径中缺少引号?:file = "mypath/mylists.RData"
  • 干杯,我的代码中有配额,我也在这里添加了配额。
  • 关闭压缩,看看是否有帮助:save(list1, list2, list3, list4, list5, file="mypath/mylists.RData", compress = FALSE)
  • 首先在每个元素或插槽(如果是 S4 对象)上使用 object.size 仔细检查对象的实际字节大小,例如object.size(list1$firstpart)
  • 给你和所有新人的建议:你必须提供操作系统、机器品牌和型号和年龄,在保存操作期间实时指示的可用 RAM 总量。否则我们只是在胡乱猜测原因。当你这样做的时候,测试保存其他对象,测试只保存一个“listX”对象,等等。

标签: r save saving-data rdata


【解决方案1】:

这只是一个猜测,因为我们没有您的数据。

r 中的某些对象包含对环境的引用。最常见的例子是函数和公式。如果您保存其中一个,则 r 可能需要保存整个环境。这会大大增加所保存内容的大小。如果您的内存不足,由于交换可能需要很长时间。

例子:

F <- function () {
  X <- rnorm(1000000)
  Y ~ z
}

此函数返回一个小公式,它引用了持有 X 的环境,因此保存它会占用大量空间。

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 2016-12-13
    • 2020-03-19
    • 2018-02-10
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多