【问题标题】:Memory exhausted trying to extract from big mcmc.list试图从大 mcmc.list 中提取内存已耗尽
【发布时间】:2015-03-14 19:41:00
【问题描述】:

我在尝试从大 mcmc.list 中提取单个变量时遇到问题:

> x <- outRJ$mcmc[,'avail_int']
Error: cannot allocate vector of size 146.8 Mb

outRJ$mcmc mcmc.list 很大,实际上是 442 MB(包含 3 个链的数据,大约 960 个变量,每个 20000 次迭代):

> object.size(outRJ$mcmc)/1024/1024
[1] 442.5508 #

但单个变量应该只有 234 kB!但是提取它似乎需要更多的内存!

如何在不需要太多内存的情况下从大型 mcmc.list 中提取?

【问题讨论】:

    标签: r winbugs jags r-coda


    【解决方案1】:

    当前的子集代码(在函数 [.mcmc.list)中在子集之前复制列表的每个元素。我已经修改了开发版coda中的代码。与此同时,Matt 的解决方法应该可以,因为它还避免了冗余副本。

    【讨论】:

      【解决方案2】:

      我认为这应该可行:

       x <- as.mcmc.list(lapply(outRJ$mcmc, function(x) return(x[,'avail_int',drop=FALSE])))
      

      马特

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多