我希望能够概括clusterApply()
的行为,以便我可以使用不同数量的参数来并行化函数。
通常情况下,我使用clusterApply()
这样:
clusterApply(cl=cl,seq_len(nsim),FUN=runsim,arg1,arg2,arg3)
但是如果我不知道runim函数有多少参数呢?我在考虑使用do.call("runsim",listofArguments)
,但我不知道我是否可以在clusterApply
内使用它。
有什么建议吗?
答案 0 :(得分:1)
主要问题似乎是do.call
希望函数(或其名称)作为第一个参数而clusterApply
与apply
系列中的所有函数一样,通过迭代over object作为它调用的函数的第一个参数。因此,一种解决方案可能是:
clusterApply(cl=cl,seq_len(nsim),FUN=function(x) do.call(rumsim, args = list(...)))
...
现在可以填充任何不同的参数,包括移交x
的可能性(即迭代的对象切片,在本例中为模拟编号)。
我不认为还需要将clusterApply
包装到do.call
,因为你知道要调用哪个函数(clusterApply
)。