Asignación de un valor de un bucle foreach
Me gustaría paralelizar un bucle como
td <- data.frame(cbind(c(rep(1,4),2,rep(1,5)),rep(1:10,2)))
names(td) <- c("val","id")
res <- rep(NA,NROW(td))
for(i in levels(interaction(td$id))){
res[td$id==i] <- mean(td$val[td$id!=i])
}
con la ayuda depara cada() delbiblioteca (doParallel) con el fin de acelerar los cálculos. Desafortunadamente, foreach no parece admitir tareas directas, al menos
registerDoParallel(4)
res <- rep(NA,NROW(td))
foreach(i=levels(interaction(td$id))) %dopar%{
res[td$id==i] <- mean(td$val[td$id!=i])}
no hace lo que quiero (da el mismo resultado que el bucle normal anterior). Cualquier idea de lo que estoy haciendo mal o de cómo podría "hackear" el.combinar ¿Opción en foreach para hacer lo que quiero? Tenga en cuenta que el orden de la variable id no siempre es el mismo en el conjunto de datos original. Cualquier sugerencia sería muy apreciada!