2013-04-06 3 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.