将多个列表列表组合成一个列表列表的功能?

Function to combine multiple lists of lists into a single list of lists?

假设我们有列表l,这是一个列表列表。

a <- list(c(1,2,3))
b <- list(c(4,5,6), c(7,8,9))
c <- list(c(10,11,12), c(13,14,15), c(16,17,18))

l <- list(a, b, c)

所以 l 是一个列表列表,其中每个列表本身至少包含一个列表。

问题

我如何制作一个可以将所有最低级别列表提取到单个列表列表中的函数?

# Goal
list(c(1,2,3), c(4,5,6), c(7,8,9), c(10,11,12), c(13,14,15), c(16,17,18))

备注:

到目前为止我尝试过的一些事情

一些不成功的尝试,主要使用sapply()unlist()

sapply(l, function(x) { unlist(x) })
# [[1]]
# [1] 1 2 3
# 
# [[2]]
# [1] 4 5 6 7 8 9
# 
# [[3]]
# [1] 10 11 12 13 14 15 16 17 18

unlist(a)
# [1] 1 2 3

# unlist() seems to combine the elements of multiple lists into one list (not desired here)..
unlist(b)
# [1] 4 5 6 7 8 9

我认为 论点看起来很有希望,但不幸的是我也无法让它做我想做的事:

unlist(b, recursive = FALSE)
# [1] 4 5 6 7 8 9

使用 unlist,在您的初始列表上非递归。

unlist(l, recursive=FALSE)
# [[1]]
# [1] 1 2 3
# 
# [[2]]
# [1] 4 5 6
# 
# [[3]]
# [1] 7 8 9
# 
# [[4]]
# [1] 10 11 12
# 
# [[5]]
# [1] 13 14 15
# 
# [[6]]
# [1] 16 17 18

只需使用unlist():

a <- list(c(1,2,3))
b <- list(c(4,5,6), c(7,8,9))
c <- list(c(10,11,12), c(13,14,15), c(16,17,18))
l <- list(a, b, c)

l.want <- list(c(1,2,3), c(4,5,6), c(7,8,9), c(10,11,12), c(13,14,15), c(16,17,18))

#Use unlist
l.func <- unlist(l, recursive = F)

all.equal(l.want, l.func)
# TRUE