将向量列表转换为数据帧列表

时间:2019-05-04 12:53:49

标签: r

我有几个要转换为数据帧的向量列表。

list1 <- list(A1 = LETTERS[1:10], B1 = LETTERS[3:12], C1 = LETTERS[11:20])
list2 <- list(A2 = 2:11, B2 = 1:10, C2 = 3:12)
list3 <- list(A3 = 100:109, B2 = 110:109, C3 = 105:114)

我希望每个列表中的第i个矢量成为数据帧i中的一列。换句话说,我想要的输出是:

> df_list
[[1]]
   col1 col2 col3
1     A    2  100
2     B    3  101
3     C    4  102
4     D    5  103
5     E    6  104
6     F    7  105
7     G    8  106
8     H    9  107
9     I   10  108
10    J   11  109

[[2]]
   col1 col2 col3
1     C    1  110
2     D    2  109
3     E    3  110
4     F    4  109
5     G    5  110
6     H    6  109
7     I    7  110
8     J    8  109
9     K    9  110
10    L   10  109

[[3]]
   col1 col2 col3
1     K    3  105
2     L    4  106
3     M    5  107
4     N    6  108
5     O    7  109
6     P    8  110
7     Q    9  111
8     R   10  112
9     S   11  113
10    T   12  114

我知道我可以使用for循环来做到这一点:

df_list <- NULL
for (i in 1:length(list1)) {df_list[[i]] <- data.frame(col1 = list1[[i]], col2 = list2[[i]], col3 = list3[[i]])}
df_list

仅使用基本R函数是否有更有效的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以使用Map,将三个列表作为输入传递,cbind

Map(cbind.data.frame, col1 = list1, col2 = list2, col3 = list3)


#$A1
#   col1 col2 col3
#1     A    2  100
#2     B    3  101
#3     C    4  102
#4     D    5  103
#5     E    6  104
#6     F    7  105
#7     G    8  106
#8     H    9  107
#9     I   10  108
#10    J   11  109

#$B1
#   col1 col2 col3
#1     C    1  110
#2     D    2  109
#3     E    3  110
#4     F    4  109
#5     G    5  110
#6     H    6  109
#.....