我有几个要转换为数据帧的向量列表。
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函数是否有更有效的方法?
谢谢!
答案 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
#.....