r - 我使用plyr对吗?我似乎使用了太多的内存

标签 r plyr data.table

我有以下一些较大的数据集:

 > dim(dset)
 [1] 422105     25
 > class(dset)
 [1] "data.frame"
 > 

不执行任何操作,R进程似乎需要大约1GB的RAM。

我正在尝试运行以下代码:
  dset <- ddply(dset, .(tic), transform,
                date.min <- min(date),
                date.max <- max(date),
                daterange <- max(date) - min(date),
                .parallel = TRUE)

运行该代码,RAM使用率飞速增长。它在32核计算机上运行时完全饱和了60GB的RAM。我究竟做错了什么?

最佳答案

如果性能是一个问题,那么最好改用同名软件包中的data.table。他们很快。您可能会做类似以下的事情:

library(data.table)
dat <- data.frame(x = runif(100),
                  dt = seq.Date(as.Date('2010-01-01'),as.Date('2011-01-01'),length.out = 100),
                  grp = rep(letters[1:4],each = 25))

dt <- as.data.table(dat)
key(dt) <- "grp"

dt[,mutate(.SD,date.min = min(dt),
               date.max = max(dt),
               daterange = max(dt) - min(dt)), by = grp]

关于r - 我使用plyr对吗?我似乎使用了太多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454019/

相关文章:

performance - 使用 do.call 和 ldply 将长长的 data.frames 列表(约 100 万)转换为单个 data.frame 时遇到问题

r - 类别数不等于特定类别数

r - 从列表中的数据框中提取不同的行集

r - 如何使用 ddply 获取数据框中类的加权平均值?

r - 没有读取功能吗?

r - data.table 中行的条件操作和扩展也考虑了没有 for 循环的先前扩展

r - 将二进制向量转换为十进制

r - 在 RStudio 中, `knit` 始终有效,但 `rmarkdown::render` 在第二次运行时失败(但不是第一次!)

重命名 ldply 中的 .id 列

r - 如何在使用 plyr 时避免重复代码