
1 Nov
2011
1 Nov
'11
12:00
a generalizacao da minha solucao eh: 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) 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)))) tmp[complete.cases(tmp),] } 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,]) })