在子列表中选择元素并使其成为数据框中的列

Joe*_*Joe 1 r list sublist

我有一个2000个子列表的列表,每个子列表有7个元素,每个元素都有相同的形式.这些元素中的第五个是具有40个元素的数字向量.我的目标是获得一个包含2000行和40列的数据框,其中每列代表2000个子列表的第五个元素中的40个元素之一.这是一个缩小的例子:

sub_list_1 <- list(a = c(1:5), b = "b")
sub_list_2 <- list(a = c(6:10), b = "b")
sub_list_3 <- list(a = c(11:15), b = "b")
top_list <- list(sub_list_1, sub_list_2, sub_list_3)
Run Code Online (Sandbox Code Playgroud)

现在,假设我想要一个包含5列和3行的数据框,其中每列代表五个元素中的一个a,每行代表一个子列表.因此,输出应该是

 output
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
Run Code Online (Sandbox Code Playgroud)

lmo*_*lmo 6

一个基本的R方法是用来sapply提取值,当每个列表提取的元素具有相同的长度时返回一个矩阵,转换结果t.

 t(sapply(top_list, "[[", 1))
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
Run Code Online (Sandbox Code Playgroud)

您还可以使用as.data.frame将矩阵转换为data.frame.

as.data.frame(t(sapply(top_list, "[[", 1)))
  V1 V2 V3 V4 V5
1  1  2  3  4  5
2  6  7  8  9 10
3 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)