Salvando saída do loop for em quadros de dados separados

Eu tenho um problema simples que não consegui resolver, apesar das muitas postagens semelhantes, porque sou um idiota no R e não estou conseguindo o que deveria estar recebendo. Eu tenho dois conjuntos de arquivos,

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

que desejo mesclar

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

e salve cada iteração de mesclagem em um novo quadro de dados

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)

       }  
    }

Embora eu tenha certeza de que há um código mais elegante por aí, esse código faz o que eu quero. O problema é que ele está salvando apenas a iteração final da mesclagem, de modo que, em vez de obter quadros de dados 1:43, eu recebo apenas o 43º. Sei que não estou conseguindo indexar corretamente no loop for, mas lutei por horas para entender meu erro e falhei.

Lamento não ter incluído um exemplo reproduzível, mas esperava que, como meu código realmente funcionasse, alguém pudesse ver instantaneamente o que estava faltando, permitindo que todas as 43 iterações fossem produzidas por meio de atribuição. Também estou ciente de que o mapply provavelmente seria uma solução melhor, mas não consegui obter nenhuma tração, apesar de várias horas de tentativas!

Um muito humilde (e humilhado por minha própria ignorância) obrigado.

questionAnswers(1)

yourAnswerToTheQuestion