我创建了一个函数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没有传递额外的参数。
有谁知道如何正确地做到这一点?
由于
答案 0 :(得分:5)
从以下示例中可以看出mclapply
以这种方式允许额外的参数:
mclapply(2:4, function(i,j,k) c(i,j,k), i=1, k=5)
我认为你的问题是mclapply
没有采用SIMPLIFY
参数,所以它将它传递给你的函数导致错误。您可能会对mcmapply
感到困惑,SIMPLIFY
确实需要{{1}}参数。