I am trying to optimize some calculations using the package multicore. I have a function that returns three variables of interest in a list. Normally I would do a for loop over (i in 1:n) but the calculations are independent so I could use mclapply(1:n, loopbody(i)).
loopbody <- function(i) { waveletsmooth(resampled[, i]) } mclapply(1:n, loopbody, mc.preschedule=FALSE) Except that I am really not interested in returning a list of n lists each containing the three variables. I would like to have three variables each containing the data in n columns. base = smooth = matrix(0, l, n) loopbody <- function(i) { tmp <- waveletsmooth(resampled[, i]); base[, i] <<- tmp[["basecorrect"]]; smooth[, i] <<- tmp[["nobasecorrect"]]; } mclapply(1:n, loopbody, mc.preschedule=FALSE); Frustratingly, this does not work, as is obvious from help(multicore), since the child threads use copy-on-write on the memory inherited from the master. So my question is: How do I allow the child threads to work on the variables base and smooth as shared memory, so that I don't have to use sendMaster or similar functions that copy the results? -- Med venlig hilsen Rune Schjellerup Philosof ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.