Одновременное объединение нескольких data.frames в список

У меня есть список из многих data.frames, которые я хочу Проблема в том, что каждый data.frame отличается количеством строк и столбцов, но все они имеют общие ключевые переменные (которые я назвал "var1" и " var2 " в приведенном ниже коде). Если бы data.frames были идентичны с точки зрения столбцов, я мог бы просто rbind , для которого plyr rbind.fill справился бы с задачей , но с этими данными дело обстоит не так.

Поскольку команда merge работает только с 2 кадрами данных, я обратился в Интернет за идеями. Я получил это из здесь ], которая отлично работала в R 2.7.2, что у меня было в то время:

merge.rec <- function(.list, ...){
    if(length(.list)==1) return(.list[[1]])
    Recall(c(list(merge(.list[[1]], .list[[2]], ...)), .list[-(1:2)]), ...)
}

И я бы назвал функцию так:

df <- merge.rec(my.list, by.x = c("var1", "var2"), 
                by.y = c("var1", "var2"), all = T, suffixes=c("", ""))

Но в любой версии R после 2.7.2, включая 2.11 и 2.12, этот код не работает со следующей ошибкой:

Error in match.names(clabs, names(xi)) : 
  names do not match previous names

(Между прочим, я вижу другие ссылки на эту ошибку в другом месте без разрешения).

Есть ли способ решить эту проблему?

231
задан Community 23 May 2017 в 02:18
поделиться

1 ответ

Когда у Вас есть список DFS, и столбец содержит "идентификатор", но в некоторых списках, отсутствуют некоторые идентификаторы, тогда можно использовать эту версию, Уменьшают / Слияние для присоединения к нескольким DFS недостающего Ids строки или маркировок:

Reduce(function(x, y) merge(x=x, y=y, by="V1", all.x=T, all.y=T), list_of_dfs)
0
ответ дан 23 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: