Сохранение вывода цикла 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, вероятно, будет лучшим решением, но я не смог добиться успеха, несмотря на несколько часов попыток!
Большое скромное (и смиренное моим собственным невежеством) спасибо.