我有一个相同结构的列表,如下:
test1 <- list(first = data.frame(col1 = c(1,2), col2 = c(3,4)),
second = data.frame(COL1 = c(100,200), COL2 = c(300, 400)))
test2 <- list(first = data.frame(col1 = c(5,6), col2 = c(7,8)),
second = data.frame(COL1 = c(500,600), COL2 = c(700,800)))
orig.list <- list(test1, test2)
我希望:
- 将每个嵌套列表的第一个元素绑定在一起,将每个嵌套列表的第二个元素绑定在一起,以此类推。
- 重新组合结果元素为单个列表,并与第一个列表具有相同的结构。
我可以通过逐个元素轻松完成此操作:
firsts <- orig.list %>% purr::map(1) %>% dplyr::bind_rows()
seconds <- orig.list %>% purr::map(2) %>% dplyr::bind_rows()
new.list <- list(first = firsts, second = seconds)
然而,对于n个列表元素,这需要我:
- 知道每个列表中元素的数量。
- 知道元素的名称和顺序,以便能够使用正确的名称和顺序重新创建新列表。
- 重复复制并粘贴同一行代码。
我正在寻找如何更通用地应用purrr:map(或其他tidyverse函数)来组合一个列表的所有元素,并保留元素的名称和顺序。
test1 <- list(first = data.frame(col1 = c(1,2), col2 = c(3,4)), second = seq(101:200))
和test2 <- list(second = seq(1:100), first = data.frame(col1 = c(5,6), col2 = c(7,8)))
- undefined