具有大量GGR图的R不稳定性 背景

具有大量GGR图的R不稳定性 背景,r,ggplot2,bigdata,R,Ggplot2,Bigdata,我试图通过使用ggplot和生成大量的直方图图(大约100个)multiplot将一系列绘图作为其主要参数,因此我生成了一个列表: plotlist <- lapply(mycolnames[1:num_plots],function(names) { ggplot(mydata, aes_string(x=names, fill="Class")) + geom_density(alpha=.3) }) 这适用于4900个采样点。对于整个98000,它看起来如下所示: &g

我试图通过使用ggplot和生成大量的直方图图(大约100个)
multiplot
将一系列绘图作为其主要参数,因此我生成了一个列表:

plotlist <- lapply(mycolnames[1:num_plots],function(names) {
    ggplot(mydata, aes_string(x=names, fill="Class")) + geom_density(alpha=.3)
  })
这适用于4900个采样点。对于整个98000,它看起来如下所示:

> object.size(p1)
92,922,432 bytes
30倍,大约是2.5GB。看来我的记忆有了上限

有趣的是,我似乎被限制在比可用RAM少得多的范围内。我应该如何调整

> gc()
            used   (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells   1879639  100.4    3094291  165.3   3094291  165.3
Vcells 141384288 1078.7  365457852 2788.3 476322412 3634.1
操作系统限制
ulimit
报告物理内存没有限制,这让我想知道这个R会话的限制是从哪里来的。

将一个绘图分配给一个对象,并查看R为每个ggplot对象分配了多少内存。e、 g.
p您可以尝试一种稍微不同的方法来布置多个GGPlot,看看是否有效。这里有一个来自Hadley的ggplot2 wiki的选项,使用grid.arrange从gridExtra包(参见第二个标题):就内存使用而言,一个好的经验法则是,由于复制对象,分析使用的数据集大小是RAM的三倍。我会在ggplot2之外通过
stat\u density
进行计算。这样就可以对内存效率进行优化。RAM大小可能有点麻烦。您通常会受到操作系统可用的连续虚拟内存量的限制。我假设您使用的是64位版本的R。无论如何,问题是每个绘图都需要自己的数据副本。也许使用
data.table
存储
mydata
会减少一些内存。
> gc()
            used   (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells   1879639  100.4    3094291  165.3   3094291  165.3
Vcells 141384288 1078.7  365457852 2788.3 476322412 3634.1