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!

Respuestas a la pregunta(2)

Su respuesta a la pregunta