4

我创建了一个函数 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 没有传递额外的参数。

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

谢谢

4

1 回答 1

7

您可以从以下示例中看到mclapply确实允许以这种方式使用额外参数:

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

我认为您的问题是mclapply不带SIMPLIFY参数,因此它将其传递给导致错误的函数。您可能会混淆mcmapply,它确实需要一个SIMPLIFY参数。

于 2013-04-06T15:50:36.223 回答