mclapply其他论点

时间:2013-04-06 15:06:13

标签: r parallel-processing lapply mclapply

我创建了一个函数DevCstat()。

它需要参数:indat,mod,Covar,txtMat,PatCovar。

indat是一个列表,我想将该函数应用于列表的每个元素。

mod,Covar,txtMat,PatCovar是我想用于每次调用函数的对象,这些对象不会改变列表元素。

这似乎有效:

lapply(test, DevCstat, mod='A', Covar=Covar,txtMat=txtMat, PatCovar=PatCovar)

但是,并行版本不起作用:

mclapply(test,DevCstat,mod = 'A', Covar=Covar, txtMat=txtMat, PatCovar=PatCovar, SIMPLIFY = F, mc.cores = getOption("mc.cores", numcore))

我收到错误

all scheduled cores encountered errors in the user code

我认为问题是mclapply没有传递额外的参数。

有谁知道如何正确地做到这一点?

由于

1 个答案:

答案 0 :(得分:5)

从以下示例中可以看出mclapply以这种方式允许额外的参数:

mclapply(2:4, function(i,j,k) c(i,j,k), i=1, k=5)

我认为你的问题是mclapply没有采用SIMPLIFY参数,所以它将它传递给你的函数导致错误。您可能会对mcmapply感到困惑,SIMPLIFY确实需要{{1}}参数。