2013-04-06 74 views
2

我已經創建了一個函數DevCstat()。mclapply其他參數

它需要參數: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沒有傳遞額外的論據。

有誰知道如何正確地做到這一點?

感謝

回答

5

您可以從下面的例子中看到,mclapply確實允許這樣額外的參數:

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

我覺得你的問題是,mclapply不採取SIMPLIFY說法,所以它將它傳遞給導致錯誤的函數。您可能會對mcmapply感到困惑,這確實需要SIMPLIFY參數。