我有一个专栏,在该专栏中,我有大约5-10个实例,每个实例有几十万个不同的字符串。我想计算它们,然后将计数放入相应的行。所以我这样做:
newdf <- ddply(oldDF, ~BigVariable, transform, counts = length(BigVariable))
在我开始接近100万行/ 1GB文件大小之前一切正常。 每次使用此大小或更大的数据集时,我的R会话都会发生致命错误。然而,对于28 Gb的可用内存,我不明白为什么这应该是一个问题,但我对this thread的理解是ddply有时可能是一个内存耗尽。
我很确定这是一个内存问题,因为在我的系统监视器崩溃之前,我看到修改后的内存和使用内存争夺可用内存,直到绿色条形图胜利并占据最后一位,R在同一时刻崩溃。
我还应该尝试什么?是否有更多内存有效的方法来获取这些计数并将它们放在所有适当的行中?
答案 0 :(得分:2)
dplyr
是ddply
的更好替代品,因为它可以更有效。
library(dplyr)
oldDF %>%
group_by(BigVariable) %>%
mutate(counts = n())
或data.table
library(data.table)
setDT(oldDF)[, counts := .N, by = BigVariable]