2

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

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

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

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

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

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

4

2 回答 2

2

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

于 2015-03-16T11:06:27.747 回答
2

我认为这应该有效:

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

马特

于 2015-03-16T08:21:07.057 回答