我想连接或展平矩阵列表,但将列表索引保留为结果矩阵中的新列。最好使用dplyr / map。
这是我的解决方法
l <- list(matrix(1:10, ncol=2, byrow=T), matrix(11:20, ncol=2, byrow=T), matrix(2:7, ncol=2, byrow=T))
melt(l) %>%
group_by(L1, Var1) %>% # group by list and row
spread(Var2, value) %>%
rename(row=Var1, list=L1, x=`1`, y=`2`)
它可以工作(尽管结果需要重新排序),但是这样做有没有更优雅/更可靠/更有效的方式?
答案 0 :(得分:0)
@hrbrmstr的方法效果很好,并且非常紧凑。如您的示例一样,如果您还想知道每个矩阵来自哪一行,您可以执行以下操作:
library(tidyverse)
map_df(l, ~ {mutate(as_tibble(.), row = 1:nrow(.))}, .id = "list")
结果:
# A tibble: 13 x 4
matrix V1 V2 row
<chr> <int> <int> <int>
1 1 1 2 1
2 1 3 4 2
3 1 5 6 3
4 1 7 8 4
5 1 9 10 5
6 2 11 12 1
7 2 13 14 2
8 2 15 16 3
9 2 17 18 4
10 2 19 20 5
11 3 2 3 1
12 3 4 5 2
13 3 6 7 3