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)