Rbind dataframes в списке списков

У меня есть список списков, который выглядит так: x[[state]][[year]]. Каждый элемент этого является фреймом данных, и доступ к ним по отдельности не является проблемой.

Однако я хотел бы привязать кадры данных к нескольким спискам. Более конкретно, я хотел бы иметь в качестве вывода столько кадров данных, сколько у меня есть годы, то есть rbind всех кадров данных состояния в течение каждого года. Другими словами, я хотел бы объединить все свои данные состояния из года в год в отдельные кадры данных.

Я знаю, что я могу объединить один список в кадр данных с помощью do.call("rbind",list). Но я не знаю, как это сделать в списках списков.

Ответ 1

Вы можете сделать что-то в следующих строках (я не мог проверить, поскольку у меня нет такой структуры):

extract.year <- function(my.year) lapply(x, function(y) y[[my.year]])

x.by.year <- sapply(my.list.of.years, function(my.year)
    do.call(rbind, extract.year(my.year)))   

Год выделения функции создает список, содержащий только данные для данного года. Затем вы их привяжете...

Ответ 2

Сначала сверните его в список:

list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)