我想通过以下名称绑定来自两个不同嵌套列表的R数据帧:
list1 = list(list_a = list(df1 = data.frame(letters = c('A','B','C'),
numbers = seq(1,3)),
df2 = data.frame(letters = c('A','B','C','D','E'),
numbers = seq(1,5))),
list_b = list(df3 = data.frame(norm = rnorm(4))))
list2 = list(list_a = list(df1 = data.frame(letters = c('D','E','F'),
numbers = seq(4,6)),
df2 = data.frame(letters = c('F','G','H','I','J'),
numbers = seq(6,10))),
list_b = list(df3 = data.frame(norm = rnorm(4))))
我期望通过名称绑定这两个列表后的结果是:
> list3
$list_a
$list_a$df1
letters numbers
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
$list_a$df2
letters numbers
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
7 G 7
8 H 8
9 I 9
10 J 10
$list_b
$list_b$df3
norm
1 0.1400504
2 -0.5785170
3 -0.2905891
4 1.9175712
5 1.8736454
6 -0.4895259
7 0.5975914
8 0.3586774
所以,简而言之,我真正想做的是通过名称绑定来自这两个嵌套列表的各个数据帧。
有什么想法吗?
假设list1
和list2
有一个相互的结构(相同的深度、列表名称、顺序(,您可以使用嵌套的Map()
:
Map((x, y) Map(rbind, x, y), list1, list2)
$list_a
$list_a$df1
letters numbers
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
$list_a$df2
letters numbers
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
7 G 7
8 H 8
9 I 9
10 J 10
$list_b
$list_b$df3
norm
1 0.6370310
2 0.3425583
3 -0.8333353
4 1.5825106
5 -0.2551183
6 1.1983533
7 -1.0771730
8 -1.1065747