我对数据帧有许多操作,我想加快使用这些操作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 解决方案?