访问R中的列表元素

时间:2016-11-18 07:45:11

标签: r list

我在R中有一个1300个列表的列表。像这样的例子:

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吗?

2 个答案:

答案 0 :(得分:3)

使用lapply遍历列表以提取每个子列表的所需元素:

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

答案 1 :(得分:1)

使用purrr,如果将map函数传递给字符串(或整数),它将使用它作为提取器来选择具有该索引的节点。此外,如果您使用map_df,它会将结果强制转换为data.frame,因此您只需要:

library(purrr)

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