我正在尝试着想办法将dplyr::do
函数并行部署。在阅读了一些文档后,似乎dplyr::init_cluster()应该足以告诉do()以并行方式运行。不幸的是,当我测试时,情况似乎并非如此:
library(dplyr)
test <- data_frame(a=1:3, b=letters[c(1:2, 1)])
init_cluster()
system.time({
test %>%
group_by(b) %>%
do({
Sys.sleep(3)
data_frame(c = rep(max(.$a), times = max(.$a)))
})
})
stop_cluster()
输出结果如下:
Initialising 2 core cluster.
|==========================================================================|100% ~0 s remaining
user system elapsed
0.03 0.00 6.03
如果do调用在两个核心之间分割,我期望结果是3。我可以通过在do()函数中添加一个在主R终端打印输出的语句来确认这一点。那我还缺少什么呢?
我正在使用dplyr 0.4.2和R 3.2.1。