Сохранение вывода цикла for в отдельных фреймах данных

У меня есть простая проблема, которую я не смог решить, несмотря на множество похожих постов, потому что я немного болван в R, и я не получаю того, что должен был бы получить. У меня есть два набора файлов,

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

что я хочу слить

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

а затем сохранить каждую итерацию слияния в новый фрейм данных

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)

       }  
    }

Хотя я уверен, что есть более элегантный код, этот код делает то, что я хочу. Проблема в том, что он сохраняет только последнюю итерацию слияния, поэтому вместо получения 1:43 фреймов данных я получаю только 43-й. Я знаю, что не могу правильно индексировать в цикле for, но я часами пытался понять свою ошибку и потерпел неудачу.

Я сожалею, что не включил воспроизводимый пример, но надеялся, что, поскольку мой код действительно работает, кто-то сможет сразу увидеть, что мне не хватает, что позволит всем 43 итерациям выводиться через assign. Я также знаю, что mapply, вероятно, будет лучшим решением, но я не смог добиться успеха, несмотря на несколько часов попыток!

Большое скромное (и смиренное моим собственным невежеством) спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос