我生成mylist的包含三个小标题。
创建 mylist 后,如何创建三个 tibbles A_complete,B_complete并C_complete通过分别绑定 mylist 的所有 As、Bs、C 行。
mylist <- list()
for (iter in 1:10)
{
mylist[[iter]] <- list(A = tibble(x = runif(5)),
B = tibble(x = rep("B", 2)),
C = tibble(x = 0:iter))
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的用途purrr::transpose()。这是一个简单的 tidyverse 解决方案。
library(tidyverse)
complete_data = mylist %>%
transpose() %>%
map(reduce, bind_rows)
Run Code Online (Sandbox Code Playgroud)
输出:
> complete_data$A
# A tibble: 50 x 1
x
<dbl>
1 0.905
2 0.102
3 0.923
4 0.504
5 0.187
6 0.945
7 0.0668
8 0.596
9 0.131
10 0.220
# ... with 40 more rows
Run Code Online (Sandbox Code Playgroud)
同样,complete_data$B和complete_data$C都可用。