R:将嵌套列表转换为一个级别列表

时间:2017-03-11 19:11:28

标签: r list

我得到了以下y嵌套列表:

asset1/np.sum(asset1)

我想从这个嵌套列表中提取所有元素并将它们放入一个级别的列表中,所以我的预期结果应该是:

x1=c(12,54,2)
x2=c(2,88,1)
x3=c(4,8)

y=list()
y[[1]]=x1
y[[2]]=list(x2,x3)

y
[[1]]
[1] 12 54  2

[[2]]
[[2]][[1]]
[1]  2 88  1

[[2]][[2]]
[1] 4 8

显然,真正的问题涉及更深层次的嵌套列表,你会如何解决它?我尝试了一下,但我失败了。

2 个答案:

答案 0 :(得分:6)

lapply一起试用rapply

lapply(rapply(y, enquote, how="unlist"), eval)

#[[1]]
#[1] 12 54  2

#[[2]]
#[1]  2 88  1

#[[3]]
#[1] 4 8

它也适用于更深层次的列表。

答案 1 :(得分:3)

你可以试试这个:

flatten <- function(lst) {
    do.call(c, lapply(lst, function(x) if(is.list(x)) flatten(x) else list(x)))
}

flatten(y)

#[[1]]
#[1] 12 54  2

#[[2]]
#[1]  2 88  1

#[[3]]
#[1] 4 8