
Helber, confirme que vc nao me colocou na sua lista negra. Rubem, tente o codigo abaixo, que seria como eu faria... No meu computador, para 1250 niveis, eu preciso de cerca de 125sec.... o codigo e' mais lento pq um cluster com SOCK e' menos eficiente... e o custo (tempo) para eu otimizar o codigo interno seria muito alto. ### library(doSNOW) library(foreach) ncpu <- 4 cl <- makeSOCKcluster(rep("localhost",ncpu)) registerDoSNOW(cl) mediaPorGrupo <- function(x, k, grp){ tmp <- subset(x, R==grp$R & CC==grp$CC & TF==grp$TF) nr <- nrow(tmp) cbind(tmp[, c('P', 'R', 'TF', 'CC')], ma.y=as.numeric(filter(tmp$y, rep(1/k, k))), ma.x=as.numeric(filter(tmp$z, rep(1/k, k))))[-c(1, nr),] } P <- 2000:2010 Rep <- letters[1:5] TF <- 1:2 CC <- paste("H-",101:299,sep="") a <- expand.grid(P=P,R=Rep,TF=TF,CC=CC) a$y <- rnorm(nrow(a)) a$z <- runif(nrow(a)) grps <- unique(a[, c('R', 'CC', 'TF')]) system.time(res <- foreach(i=1:nrow(grps), .combine=rbind) %dopar% { mediaPorGrupo(a, 3, grps[i,]) })