rbind dataframes в списке списков
У меня есть список списков, который выглядит следующим образом: x[[state]][[year]]
, Каждый элемент этого представляет собой фрейм данных, и доступ к ним по отдельности не является проблемой.
Однако я хотел бы привязать фреймы данных к нескольким спискам. Точнее говоря, я хотел бы иметь столько выходных данных, сколько у меня есть лет, то есть связать все фреймы данных состояния за каждый год. Другими словами, я хотел бы объединить все свои данные о состоянии, год за годом, в отдельные фреймы данных.
Я знаю, что могу объединить один список во фрейм данных с do.call("rbind",list)
, Но я не знаю, как я могу сделать это через списки списков.
3 ответа
Вы можете сделать что-то вроде следующего (я не смог проверить, так как у меня нет такой структуры):
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)))
Функция extract year создает список, содержащий только кадры данных за данный год. Тогда ты их связываешь...
Сначала сверните его в список:
list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)
Я понимаю, что немного опаздываю на вечеринку, но как насчет:
mymat <- do.call(rbind, lapply(mylist, function(element){
element[[1]] # if df is the 1st entry of each list, could also access by name
}))
mydf <- as.data.frame(mymat)
Это похоже на ответ Марека, но избегает сочетания сладкого и сладкого.