连接时压扁列表

时间:2015-01-05 09:39:50

标签: r

是否有一种简单的方法可以在连接时展平列表列表。我的问题最好用一个例子来解释。

当我执行以下代码时。

> 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

1 个答案:

答案 0 :(得分:4)

我猜您可以使用unlistrapply,但我对任何名称重复的内容都要警惕:

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)