2016-11-18 96 views
0

我有在R.事情是這樣的例子的1300名名單列表:訪問列表中的R元素

Example = list(list(A = 1, B=data.frame(x = 2, y = 2), C="Test"), list(A = 2, B=data.frame(x = 1, y = 2), C="Test2"), list(A = 3, B=data.frame(x = 3, y = 8), C="Test3")) 

> Beispiel 
[[1]] 
[[1]]$A 
[1] 1 

[[1]]$B 
    x y 
1 2 2 

[[1]]$C 
[1] "Test" 

[[2]] 
[[2]]$A 
[1] 2 

[[2]]$B 
    x y 
1 1 2 

[[2]]$C 
[1] "Test2" 

[[3]] 
[[3]]$A 
[1] 3 

[[3]]$B 
    x y 
1 3 8 

[[3]]$C 
[1] "Test3" 

現在,我需要一個data.frame這樣的:

rbind(Beispiel[[1]]$B, Beispiel[[2]]$B, Beispiel[[3]]$B) 

問題是,它不使用如下命令

rbind(Beispiel[[1:3]]$B) 

工作有什麼想法,我怎樣才能得到一個data.frame沒有命名每個列表?

回答

3

遍歷使用lapply以提取每個子列表的所希望的元件列表:

do.call(rbind, lapply(Example, "[[", "B")) 
# x y 
#1 2 2 
#2 1 2 
#3 3 8 
1

隨着purrr,如果傳遞map功能的字符串(或整數),它會使用它作爲一個提取器選擇具有該索引的節點。此外,如果您使用map_df,它會將結果強制爲data.frame,因此您需要的只是:

library(purrr) 

map_df(Example, 'B') 
## x y 
## 1 2 2 
## 2 1 2 
## 3 3 8 
+1

感謝您的支持。非常有用的功能! – Sotos