具有大量ggplots的R不稳定性

时间:2014-01-12 23:52:54

标签: r ggplot2 bigdata

背景

我正在尝试使用ggplot和this multiplot function生成大量的直方图(大约100)。 multiplot将一个绘图列表作为其主要参数,因此我生成一个列表:

plotlist <- lapply(mycolnames[1:num_plots],function(names) {
    ggplot(mydata, aes_string(x=names, fill="Class")) + geom_density(alpha=.3)
  })

每列有98000个点,列数与num_plots一样多。这适用于num_plots=10,但R在50上死亡。不幸的是,RStudio没有公开跟踪,所以我不知道这是否是内存问题。 (我在Linux服务器上使用8GB。)

我看到了解决这个问题的几种方法:我可以随机抽样行,或者我可以把它放在一个10个循环中。是否有一般方法来处理我可以默认的数据量?

对象大小

根据Martín的建议,我将一个情节分开,然后查看更大的名单:

> object.size(p1)
4683224 bytes
> object.size(plotlist) # here 30 plots, approximately 30x memory
140,497,000 bytes

这是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会话在哪里受到限制。

0 个答案:

没有答案