试图从大 mcmc.list 中提取内存耗尽

Memory exhausted trying to extract from big mcmc.list

我在尝试从大 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 中提取数据?

我认为这应该可行:

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

马特

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