是否有一种简单的方法可以在连接时展平列表列表。我的问题最好用一个例子来解释。
当我执行以下代码时。
> a <- c(list(list(a=1,b=2), list(a=3,b=4)), list(a=5,b=6))
> print(a)
[[1]]
[[1]]$a
[1] 1
[[1]]$b
[1] 2
[[2]]
[[2]]$a
[1] 3
[[2]]$b
[1] 4
$a
[1] 5
$b
[1] 6
我希望得到与我这样做相同的结果。
> a <- c(list(a=1,b=2), list(a=3,b=4), list(a=5,b=6))
> print(a)
$a
[1] 1
$b
[1] 2
$a
[1] 3
$b
[1] 4
$a
[1] 5
$b
[1] 6
答案 0 :(得分:4)
我猜您可以使用unlist
或rapply
,但我对任何名称重复的内容都要警惕:
as.list(unlist(a))
# $a
# [1] 1
#
# $b
# [1] 2
#
# $a
# [1] 3
#
# $b
# [1] 4
#
# $a
# [1] 5
#
# $b
# [1] 6
as.list(rapply(a, unlist))
也应该有效 - 不确定使用它是否有优势......
一个(可能)更好的想法是看看我遇到的这个LinearizeNestedList
function,它会让你压扁一个列表,但会分配名称,以便你可以确定它们本来就在哪里。
在您的工作区中加载后,用法只是:
LinearizeNestedList(a)