使用具有未知数量参数的clusterApply

时间:2014-11-10 09:33:39

标签: r parallel-processing cluster-computing

我希望能够概括clusterApply()的行为,以便我可以使用不同数量的参数来并行化函数。

通常情况下,我使用clusterApply()这样:

clusterApply(cl=cl,seq_len(nsim),FUN=runsim,arg1,arg2,arg3)

但是如果我不知道runim函数有多少参数呢?我在考虑使用do.call("runsim",listofArguments),但我不知道我是否可以在clusterApply内使用它。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

主要问题似乎是do.call希望函数(或其名称)作为第一个参数而clusterApplyapply系列中的所有函数一样,通过迭代over object作为它调用的函数的第一个参数。因此,一种解决方案可能是:

clusterApply(cl=cl,seq_len(nsim),FUN=function(x) do.call(rumsim, args = list(...)))

...现在可以填充任何不同的参数,包括移交x的可能性(即迭代的对象切片,在本例中为模拟编号)。

我不认为还需要将clusterApply包装到do.call,因为你知道要调用哪个函数(clusterApply)。