【发布时间】:2011-02-24 21:32:20
【问题描述】:
我对数据帧有一些操作,我想使用mclapply() 或其他lapply() 类似函数来加速这些操作。我解决这个问题的最简单方法之一是使数据框的每一行成为列表中的一个小数据框。我可以像这样使用plyr 轻松做到这一点:
df <- data.frame( a=rnorm(1e4), b=rnorm(1e4))
require(plyr)
system.time(myList <- alply( df, 1, function(x) data.frame(x) ))
将数据作为列表后,我可以轻松地执行以下操作:
mclapply( myList, function(x) doSomething(x$a) )
这很好用,但我有很多数据,adply() 步骤很慢。我尝试在adply 步骤上使用多核并行后端,但即使我注册了 8 个处理器,它也从未使用过一个以上的处理器。我怀疑并行选项可能不适用于此类问题。
关于如何加快速度的任何提示?也许是一个基本的 R 解决方案?
【问题讨论】:
-
你为什么不做
alply(df, 1, function(x) doSomething(x), .parallel = TRUE)?
标签: r parallel-processing multicore dataframe plyr