如何从列表列表中删除列表级别 [英] How to remove a level of lists from a list of lists
问题描述
我已经在列表中创建了一些列表,并且希望每个子列表元素都可以成为顶层的单个元素.
I have created some lists within a list and would like to be able have each sublist element to be an individual element at the top level.
例如创建一些虚拟数据:
For example to create some dummy data:
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
结果输出将只创建一个新列表,其内容如下所示:
The resultant output would just create a new list which has something like the below:
new.pp[[1]] <- pp[[1]][[1]]
new.pp[[2]] <- pp[[1]][[2]]
但是我想知道是否有一种聪明或更有效的方法,当列表中有列表时,只删除一个级别的列表....
but was wondering if there was a smart or more efficient method of just removing one level of lists when you have lists within lists....
理想情况下,我要寻找的是某种为我执行此功能的函数,因此,例如,如果我相互嵌套了多个级别的列表,而不仅仅是两个嵌套的列表,则可以递归使用该函数在每个级别上最终将每个元素都放在列表的顶部...
Ideally what I am looking for is some sort of function that carries this out for me, so that, if for example i had multiple levels of lists nested inside each other rather than just two, I can re-cursively use the function at each level bringing each element to the top of the list eventually...
推荐答案
我认为这可以解决问题
new.pp <- unlist(pp,recursive=FALSE)
这篇关于如何从列表列表中删除列表级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!