2013-06-18 65 views
20

我已經在列表中創建了一些列表,並希望能夠將每個子列表元素都設置爲頂級的單個元素。R如何從列表中刪除列表級別

例如創建一些虛擬數據:

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

,但不知道是否有剛剛取出列表中的一個級別,當你有列表中列出了一個聰明或更有效的方法....

理想情況下我所尋找的是某種功能這對我來說是這樣的,因此,如果例如我有多層次的列表而不是兩個嵌套在一起,我可以在每個級別上重新使用該函數,最終將每個元素都帶到列表的頂部。 ..

+0

+1可重現的例子,我只是說下一次讓示例數據更小一點! :-) –

+0

@ SimonO101 haha​​..yeh ...我原本是......但認爲......這個列表看起來有點小而毫無意義......讓人們想知道爲什麼我會問這個問題...... –

回答

22

我認爲這是竅門

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

我沒有看到這是一個沒有列出的論點...... –