【发布时间】:2013-06-14 10:07:34
【问题描述】:
我在一个列表中创建了一些列表,并希望能够让每个子列表元素成为顶层的单个元素。
例如创建一些虚拟数据:
pp <- lapply(10:15,function(y){
lapply(10:20,function(z){
as.data.frame(matrix(rnorm(z*y),nrow=z,ncol=y))
})
})
这将创建以下输出
> summary(pp)
Length Class Mode
[1,] 11 -none- list
[2,] 11 -none- list
[3,] 11 -none- list
[4,] 11 -none- list
[5,] 11 -none- list
[6,] 11 -none- list
你也可以做的地方
> summary(pp[[1]])
Length Class Mode
[1,] 10 data.frame list
[2,] 10 data.frame list
[3,] 10 data.frame list
[4,] 10 data.frame list
[5,] 10 data.frame list
[6,] 10 data.frame list
[7,] 10 data.frame list
[8,] 10 data.frame list
[9,] 10 data.frame list
[10,] 10 data.frame list
[11,] 10 data.frame list
生成的输出只会创建一个新列表,其内容如下:
new.pp[[1]] <- pp[[1]][[1]]
new.pp[[2]] <- pp[[1]][[2]]
但想知道当列表中有列表时是否有一种智能或更有效的方法可以仅删除一级列表....
理想情况下,我正在寻找某种可以为我执行此操作的函数,因此,例如,如果我有多个级别的列表相互嵌套,而不仅仅是两个,我可以递归地使用该函数在每个级别最终将每个元素带到列表的顶部...
【问题讨论】: