为什么 ddply 命令在进度条达到 100 后需要这么长时间?

Why does a ddply command take so long after the progress bar gets to 100?

我有一个包含 10000 行的数据文件。该文件包含 100 行的块,第一列中有不同的因子,我使用 ddply 来处理它们。例如像这样:

result.df = ddply(data.df, "V1", calc_stuff, .progress = "text")
message("done!")

ddply 进度条达到 100% 大约需要一分钟。然而,在处理脚本中的下一行之前,R 会再执行 "something" 5-7 分钟(此示例中打印消息)。

那时候R在做什么?在 "result.df" 中收集结果?我能以某种方式加快速度吗?我有很多这样的文件要处理。

ddply 采用以下方法:

  1. 拆分数据集。
  2. 将函数应用于拆分的每个组件
  3. 将组件组合成一个大的结果数据集

进度条可能处理第 2 步,并说明处理每个块的进度。第 3 步在您的情况下需要时间,并且不包含在进度条中。

为了加快您的分析速度,我将停止使用 plyr 并开始使用 dplyr。这比 plyrplyr 的后继者快几个数量级。有关详细信息,请参阅 tutorial I wrote

您的代码示例可以归结为:

results.df = data.df %>% group_by(V1) %>% calc_stuff()