After searching online, I found that clusterCall or foreach might be the solution.
Best wishes, Jie On Sun, Aug 5, 2012 at 10:23 PM, Jie <jimmycl...@gmail.com> wrote: > Dear All, > > Suppose I have a program as below: Outside is a loop for simulation (with > random generated data), inside there are several sapply()'s (10~100) over > the data and something else, but these sapply's have to be sequential. And > each sapply do not involve very intensive calculation (a few seconds only). > So the outside loop takes minutes to finish one iteration. > I guess the better way is not to parallel sapply but the outer loop. > But I have no idea how to modify it. I have a simple code here. Only two > sapply's involved for simplicity. The logical in the sapply is not > important. > Thank you for your attention and suggestion. > > library(parallel) > library(MASS) > result.seq=c() > Maxi <- 100 > for (i in 1:Maxi) > { > ## initialization, not of interest > Sigmahalf <- matrix(sample(1:10000,size = 10000,replace =T ), 100) > Sigma <- t(Sigmahalf)%*%Sigmahalf > x <- mvrnorm(n=1000, rep(0, 10), Sigma) > xlist <- list() > for (j in 1:1000) > { > xlist[[j]] <- list(X = matrix( x [j, ],5)) > } > ## end of initialization > > dd1 <- sapply(xlist,function(s) {min(abs((eigen(s$X))$values))}) > ## > sumdd1=sum(dd1) > for (j in 1:1000) > { > xlist[[j]]$dd1 <- dd1[j]/sumdd1 > } > ## Assume dd2 and dd1 can not be combined in one sapply() > dd2 <- sapply(xlist, function(s){min(abs((eigen(s$X))$values))+s$dd1}) > result.seq[i] <- sum(dd1*dd2) > > } > > [[alternative HTML version deleted]] ______________________________________________ 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.