将嵌套列表转换为列表

时间:2013-05-21 14:33:44

标签: r

我有一个简短的问题,我想取消这个嵌套列表:

mylist <- list(a = list(A=1, B=5), 
               b = list(C= 1, D = 2), 
               c = list(E = 1, F = 3))

预期结果是:

> list(a=c(1, 5), b = c(1, 2), c = c(1, 3))
$a
[1] 1 5

$b
[1] 1 2

$c
[1] 1 3

有什么建议吗?

Ť

3 个答案:

答案 0 :(得分:4)

对其他人的轻微变化并保持其基础:

lapply(mylist, unlist, use.names=FALSE)

## $a
## [1] 1 5
## 
## $b
## [1] 1 2
## 
## $c
## [1] 1 3

答案 1 :(得分:3)

查看plyr包中的llply函数

> library(plyr)
> llply(mylist, unlist)
$a
A B 
1 5 

$b
C D 
1 2 

$c
E F 
1 3 

如果你想摆脱这些名字,那就试试吧:

> lapply(llply(mylist, unlist), unname)
$a
[1] 1 5

$b
[1] 1 2

$c
[1] 1 3

答案 2 :(得分:0)

我认为将unlist()应用于列表中的每个元素应该可以为您提供所需内容:

> mylist <- list(a = list(A=1, B=5), b = list(C= 1, D = 2), c = list(E = 1, F = 3))
> mylist2 <- list(a=c(1, 5), b = c(1, 2), c = c(1, 3))
> data.frame(lapply(mylist,unlist))
  a b c
A 1 1 1
B 5 2 3
> data.frame(mylist2)
  a b c
1 1 1 1
2 5 2 3