Guardar salida de for loop en marcos de datos separados

Tengo un problema simple que no he podido resolver a pesar de las muchas publicaciones similares, porque soy un poco tonto en R, y no obtengo lo que debería estar obteniendo. Tengo dos conjuntos de archivos

All.Files <- objects(pattern="constant.country[0-9]{4}")
all.files <- objects(pattern="constant[0-9]{4}")

que deseo fusionar

mergefun <- function(X1, Y1) {
    merge(X1, Y1, by = "id")
} 

y luego guarde cada iteración de fusión en un nuevo marco de datos

for (i in All.Files) {
    a <- get(i)
      { for (j in all.files)
         b <- get(j)
         d <- dataframe(mergefun(a, b))
         newname <- paste("C", substr(j, 9, 12), sep="")
         names(d) <- c("Id", "Country", "logGDP", "GRI", GRI.group", "Year")
         assign(newname,d)

       }  
    }

Si bien estoy seguro de que hay un código más elegante, este código hace lo que quiero que haga. El problema es que solo está guardando la iteración final de fusión, por lo que en lugar de obtener marcos de datos 1:43, solo obtengo el 43o. Sé que no puedo indexar correctamente dentro del ciclo for, pero he luchado durante horas para comprender mi error y he fallado.

Lamento no haber incluido un ejemplo reproducible, pero tenía la esperanza de que, dado que mi código realmente funcionaba, alguien podría ver instantáneamente lo que me faltaba y permitiría que las 43 iteraciones salieran a través de asignar. También soy consciente de que mapply probablemente sería una mejor solución, ¡pero no pude obtener ninguna tracción a pesar de varias horas de intentos!

Un muy humilde (y humillado por mi propia ignorancia) gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta