可以在元素长度相同的地方列出许多列表

时间:2019-01-11 13:12:45

标签: r

假设我有三个列表:

List1 <- list(c(1,2,3),c('A','B','C','D'),c(0,2))
List2 <- list(c(5,6,7),c('AA','BB','CC','DD'),c(1,5))
List3 <- list(c(1,1,1),c('F','G','H','E'),c(0,6))

所需结果应为以下列表:

List
[[1]]
1 5 1
2 6 1
3 7 1

[[2]]
'A' 'AA' 'F'
'B' 'BB' 'G'
'C' 'CC' 'H'
'D' 'DD' 'E'

[[3]]
0 2
1 5
0 6

我尝试使用cbind(List1,List2,List3),但是没有给出所需的结果。

我该如何解决?

2 个答案:

答案 0 :(得分:3)

您可以这样做:

mapply(cbind, List1, List2, List3)

[[1]]
     [,1] [,2] [,3]
[1,]    1    5    1
[2,]    2    6    1
[3,]    3    7    1

[[2]]
     [,1] [,2] [,3]
[1,] "A"  "AA" "F" 
[2,] "B"  "BB" "G" 
[3,] "C"  "CC" "H" 
[4,] "D"  "DD" "E" 

[[3]]
     [,1] [,2] [,3]
[1,]    0    1    0
[2,]    2    5    6

答案 1 :(得分:1)

我们可以将名称为List的对象后跟listtranspose(来自purrr)中的数字并将其转换为tibbledata.frame

library(tidyverse)
mget(paste0("List", 1:3)) %>% 
     transpose %>% 
     map(as_tibble)