2015-01-05 34 views
0

有没有简单的方法来拼接列表的同时连接列表。我的问题可能最好用一个例子来解释。拼接列表,同时连接

当我执行以下代码。

> 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

你真的想重复的名字? – A5C1D2H2I1M1N2O1R2T1

+0

我认为lapply应该工作。 –

回答

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))也应该工作 - 不知道是否有优势以使用或不...


一个(可能)更好的主意将是t ö看看我遇到的这个LinearizeNestedList function,这可以让你扁平化一个列表,但是指定了名字,这样你就可以确定他们将在哪里。

在工作区中加载它之后,用法,简直是:

LinearizeNestedList(a) 
+0

@Anando Mahto,这非常有帮助。这是我之前对LinearizeNestedList函数不了解的一种遗憾。 – Lukasz