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没有传递额外的参数.
有谁知道如何正确地做到这一点?
谢谢
您可以从以下示例中看到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争论.