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)

Это похоже на ответ Марека, но избегает сочетания сладкого и сладкого.

Другие вопросы по тегам