我创建了一个函数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没有传递额外的参数。
有人知道如何正确地做到这一点吗?
谢谢
您可以从下面的示例中看到,mclapply
确实以这种方式允许额外的参数:
mclapply(2:4, function(i,j,k) c(i,j,k), i=1, k=5)
我认为你的问题是mclapply
不采取SIMPLIFY
参数,所以它传递给你的函数导致错误。您可能会与mcmapply
混淆,它确实接受SIMPLIFY
参数。