使用参数数目未知的clusterApply

使用参数数目未知的clusterApply,r,parallel-processing,cluster-computing,R,Parallel Processing,Cluster Computing,我希望能够概括clusterApply()的行为,以便能够并行化具有不同数量参数的函数 通常,我使用clusterApply()如下: clusterApply(cl=cl,seq_len(nsim),FUN=runsim,arg1,arg2,arg3) 但如果我不知道函数runsim有多少个参数呢?我正在考虑使用do.call(“runsim”,参数列表),但我不知道是否可以在clusterApply中使用它 有什么建议吗?主要问题似乎是do.call希望函数(或其名称)作为第一个参数,而c

我希望能够概括
clusterApply()
的行为,以便能够并行化具有不同数量参数的函数

通常,我使用
clusterApply()
如下:

clusterApply(cl=cl,seq_len(nsim),FUN=runsim,arg1,arg2,arg3)
但如果我不知道函数runsim有多少个参数呢?我正在考虑使用
do.call(“runsim”,参数列表)
,但我不知道是否可以在
clusterApply
中使用它


有什么建议吗?

主要问题似乎是
do.call
希望函数(或其名称)作为第一个参数,而
clusterApply
apply
系列中的所有函数一样,将迭代对象作为第一个参数传递给它调用的函数。因此,一种解决办法可以是:

clusterApply(cl=cl,seq_len(nsim),FUN=function(x) do.call(rumsim, args = list(...)))
现在可以填充任何不同的参数,包括移交
x
的可能性(即迭代对象的切片,在本例中为模拟编号)


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

您可以使用
do.call(clusterApply,listofArguments)
。对不起,我错了。这对我不起作用。do.call(“clusterApply”,list(cl=cl,seq_len(nsim),runSim,listofArguments))问题归结为如何在另一个do.call中处理嵌套的do.call。do.call(“ClusterApply”,list(…,do.call(“runsim”,listoA)))