R语言 根据列表的名称将列表的列表合并在R中
问题描述
如何合并一个列表的列表,以便具有相同名称的列表对象在外层合并。
# List object 1
list_1 <- list(
L1 <- list(
A1 <- c(1, 2, 3)
),
L2 <- list(
A1 <- c(1, 2, 3)
))
names(list_1) <- c("layer_1", "layer_2")
names(list_1layer_1) <- c("A1")
names(list_1layer_2) <- c("A1")
# List object 2
list_2 <- list(
L1 <- list(
B1 <- c(4, 5, 6)
),
L2 <- list(
B1 <- c(4, 5, 6)
))
names(list_2) <- c("layer_1", "layer_2")
names(list_2layer_1) <- c("B1")
names(list_2layer_2) <- c("B1")
list_1_2 <- list(list_1, list_2)
现在我想要将list_1_2
转换成这种结构(可能包含多个列表的列表,例如list_3,list_4等,但外层始终称为layer_1,layer_2和layer_3):
# End result
list_1_2 <- list(
L1 <- list(
A1 <- c(1, 2, 3),
B1 <- c(4, 5, 6)
),
L2 <- list(
A1 <- c(1, 2, 3),
B1 <- c(4, 5, 6)
))
names(list_1_2) <- c("layer_1", "layer_2")
names(list_1_2layer_1) <- c("A1", "B1")
names(list_1_2layer_2) <- c("A1", "B1")
list_1_2
解决方案
您可以使用
do.call("modifyList", list_1_2)
为了获得您想要的输出。这与调用以下代码是相同的 modifyList(list_1_2 [ [ 1 ]],list_1_2 [ [ 2 ]])
但如果集合中有更多的列表,这也可以起作用