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

han*_*ick 4 r list

我得到以下y嵌套列表:

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
Run Code Online (Sandbox Code Playgroud)

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

y_one_level_list
[[1]]
[1] 12 54  2

[[2]]
[1]  2 88  1

[[3]]
[1] 4 8
Run Code Online (Sandbox Code Playgroud)

显然,真正的问题涉及更深层的嵌套列表,您将如何解决呢?我尝试了重击,但失败了。

Psi*_*dom 8

你可以试试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • Thks,我会因为它的简单而奖励 989 (2认同)

989*_*989 6

尝试lapplyrapply

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

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

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

#[[3]]
#[1] 4 8
Run Code Online (Sandbox Code Playgroud)

它也适用于更深的列表。