ddply内存要求,解决方案

时间:2016-08-18 06:55:23

标签: r memory count plyr

我有一个专栏,在该专栏中,我有大约5-10个实例,每个实例有几十万个不同的字符串。我想计算它们,然后将计数放入相应的行。所以我这样做:

newdf <-  ddply(oldDF, ~BigVariable, transform, counts = length(BigVariable))

在我开始接近100万行/ 1GB文件大小之前一切正常。 每次使用此大小或更大的数据集时,我的R会话都会发生致命错误。然而,对于28 Gb的可用内存,我不明白为什么这应该是一个问题,但我对this thread的理解是ddply有时可能是一个内存耗尽。

我很确定这是一个内存问题,因为在我的系统监视器崩溃之前,我看到修改后的内存和使用内存争夺可用内存,直到绿色条形图胜利并占据最后一位,R在同一时刻崩溃。

  • 我已经完成了明显的和使用过的data.table,以便更有效地使用内存。
  • 一个变量中存在大量因素。我尝试将违规变量更改为一个字符,希望它能更好地使用data.table,但不会骰子。

我还应该尝试什么?是否有更多内存有效的方法来获取这些计数并将它们放在所有适当的行中?

1 个答案:

答案 0 :(得分:2)

dplyrddply的更好替代品,因为它可以更有效。

library(dplyr)
oldDF %>%
     group_by(BigVariable) %>%
     mutate(counts = n()) 

data.table

library(data.table)
setDT(oldDF)[, counts := .N, by = BigVariable]