簡體   English   中英

如何從列表列表中刪除一個級別的列表

[英]How to remove a level of lists from a list of lists

我在列表中創建了一些列表,並希望能夠讓每個子列表元素成為頂級的單個元素。

例如創建一些虛擬數據:

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]]

但是想知道是否有一種智能或更有效的方法可以在列表中有列表時只刪除一級列表....

理想情況下,我正在尋找的是某種為我執行此操作的函數,因此,例如,如果我有多個級別的列表相互嵌套而不是兩個,我可以在每個級別遞歸使用該函數最終將每個元素帶到列表的頂部......

我認為這可以解決問題

new.pp <- unlist(pp,recursive=FALSE)

Tidyverse 方法:

library(purrr)
new.pp <- flatten(pp)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM