如何在第三级命名列表中重新绑定data.frames?

如何在第三级命名列表中重新绑定data.frames?,r,data.table,bind,nested-lists,R,Data.table,Bind,Nested Lists,级别1的列表“l_start”是一个命名列表,其本身在级别2嵌套命名列表(“l1”、“l1a”), 依次在第3级包含2-3个数据帧(a、b和可能的c) 目标是基于名称在第3级rbind数据帧(如果可用),以获得“l_finish” (最好使用data.table和rlist解决方案,但purrr或base也可以) 很近,但是拿着这些不能到达那里 Rbind发生在我的示例之上的一个级别 列表中只有一个df名称,不能有多个 Apurrr解决方案: library(purrr) cols <-

级别1的列表“l_start”是一个命名列表,其本身在级别2嵌套命名列表(“l1”、“l1a”), 依次在第3级包含2-3个数据帧(a、b和可能的c)

目标是基于名称在第3级rbind数据帧(如果可用),以获得“l_finish” (最好使用data.table和rlist解决方案,但purrr或base也可以)

很近,但是拿着这些不能到达那里 Rbind发生在我的示例之上的一个级别

列表中只有一个df名称,不能有多个
A
purrr
解决方案:

library(purrr)
cols <- intersect(names(l_start[[1]]), names(l_start[[2]]))

map(l_start, `[`, cols) %>% transpose() %>% map(bind_rows)

#$a
#  X1 X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6

#$b
#  X1 X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6
库(purrr)
cols%transpose()%%>%map(绑定行)
#一美元
#X1-X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6
#b美元
#X1-X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6

我们使用
相交
转置
选择列表中的常用名称并绑定行

非常感谢,这确实回答了我原来的问题。但是我犯了一个错误,我在第2级有多个列表,每个列表都包含不同的data.frames。列表(l1,l1a,l2,l2a)转换为列表(l1_1a,l2_l2a)。您是否能够修改您的答案以允许此多个级别2列表?很抱歉第一次尝试时没有弄好。@DavidLucey-hmm…我不确定我是否理解。你能发布一个你的实际列表结构的例子并展示同样的预期输出吗?我找到了另一种方法,但是你的回答了我的问题,所以接受了。非常感谢
l_finish <- 
  list(l1_1a = list(a = rbind(l1$a, l1a$a),
                 b = rbind(l1$b, l1a$b)))

l_finish
#> $l1_1a
#> $l1_1a$a
#>   X1 X2
#> 1  1  3
#> 2  2  4
#> 3  1  4
#> 4  2  5
#> 5  3  6
#> 
#> $l1_1a$b
#>   X1 X2
#> 1  1  3
#> 2  2  4
#> 3  1  4
#> 4  2  5
#> 5  3  6

library(purrr)
cols <- intersect(names(l_start[[1]]), names(l_start[[2]]))

map(l_start, `[`, cols) %>% transpose() %>% map(bind_rows)

#$a
#  X1 X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6

#$b
#  X1 X2
#1  1  3
#2  2  4
#3  1  4
#4  2  5
#5  3  6