如何使用clusterApply并行运行自己的函数

如何使用clusterApply并行运行自己的函数,r,snow,R,Snow,我尝试使用不同的参数并行运行自己的函数EMGMMy,startmy=0: require(snow) library(parallel) tasks = list( job1 = function(y) EMGMM(y=y, startmy = 0), job2 = function(y) EMGMM(y=y, startmy = 1), job3 = function(y) EMGMM(y=y, startmy = 2) ) cl = makeCluster( le

我尝试使用不同的参数并行运行自己的函数EMGMMy,startmy=0:

require(snow)
library(parallel)

tasks = list(
    job1 = function(y) EMGMM(y=y, startmy = 0),
    job2 = function(y) EMGMM(y=y, startmy = 1),
    job3 = function(y) EMGMM(y=y, startmy = 2)
)

cl = makeCluster( length(tasks) )
clusterExport(cl, list("EMGMM"))

out = clusterApply(cl, tasks, ????)
stopCluster(cl)
但我现在不知道该怎么称呼clusterApply。y参数在每个作业中都是相同的,startmy是my算法的起始参数。

谢谢: y是多维随机变量的矩阵

这对我来说效果很好,可能不是最好的解决方案:

require(snow)
library(parallel)

tasks = list(
    job1 = function(y) EMGMM(y=y, startmy = 0),
    job2 = function(y) EMGMM(y=y, startmy = 1),
    job3 = function(y) EMGMM(y=y, startmy = 2)
)

cl = makeCluster( length(tasks) )
clusterExport(cl, ls())
clusterExport(cl, "dmvnorm") #needed in EMGMM()

out = clusterApply(cl, tasks, function(f) f(y))

stopCluster(cl)

能否请您提供函数EMGMM的代码和一些代表性数据?如果没有可复制的示例,很难判断。但是,当您将jobX重写为function而不是functiony时,以及尝试clusterApplycl、tasks、functionf时,会发生什么情况?