mclapply其他论点

use*_*871 2 parallel-processing r lapply mclapply

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

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

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

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

这似乎有效:

lapply(test, DevCstat, mod='A', Covar=Covar,txtMat=txtMat, PatCovar=PatCovar)
Run Code Online (Sandbox Code Playgroud)

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

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

我收到了错误

all scheduled cores encountered errors in the user code
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Ste*_*ton 6

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

mclapply(2:4, function(i,j,k) c(i,j,k), i=1, k=5)
Run Code Online (Sandbox Code Playgroud)

我认为你的问题是mclapply没有SIMPLIFY参数,所以它将它传递给你的函数导致错误.你可能会感到困惑mcmapply,这确实会引起SIMPLIFY争论.