Объединить список с подсписками по имени - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть функция, которая выводит результаты в виде списка с под-подсписками. Я применил эту функцию к нескольким наборам входов, поэтому теперь у меня есть список списков вывода.

Т.е. мой список списков вывода выглядит следующим образом:

main_list <- list("list1" = list("sublist1" = rbind(iris, iris, iris),
                                 "sublist2" = starwars,
                                 "sublist3" = list("subsublist1" = iris,
                                                   "subsublist2" = rbind(starwars, starwars))),
                  "list2" = list("sublist1" = iris,
                                 "sublist2" = rbind(starwars, starwars, starwars),
                                 "sublist3" = list("subsublist1" = rbind(iris, iris),
                                                   "subsublist2" = starwars)))

list1, list2 .... В списке всегда есть одинаковые элементы, и я хотел бы объединить их в один список. Структура объединенного списка будет такой же, как и у основных списков. Например:

# list_combined[["list1"]][["sublist1"]]

dplyr::bind_rows(
  main_list$list1$sublist1 %>%
    dplyr::mutate(src = names(main_list[1])),
  main_list$list2$sublist1 %>%
    dplyr::mutate(src = names(main_list[2]))
)

# list_combined[["list1"]][["sublist3"]][["subsublist2"]]
dplyr::bind_rows(
  main_list$list1$sublist3$subsublist2 %>%
    dplyr::mutate(src = names(main_list[1])),
  main_list$list2$sublist3$subsublist2 %>%
    dplyr::mutate(src = names(main_list[2]))
)

Таким образом, каждый фрейм данных связан с сохранением исходной структуры списка, за исключением добавленного столбца «источник»

...