将包含不同大小的整数列表的列表转换为R中的数据帧,而不使用任何N/a值

将包含不同大小的整数列表的列表转换为R中的数据帧,而不使用任何N/a值,r,R,我有这样的想法: x1 <- list(1,2,3,4,5) x2 <- list(1,4,7,8) x3 <- list(5,6) x4 <- list(9,0,0,5,6,7) myList <- list(x1, x2, x3, x4) df <- data.frame(matrix(unlist(myList), nrow=length(myList), byrow = T)) X1 X2 X3 X4 X5 X6 1 2 3 4 5 5

我有这样的想法:

x1 <- list(1,2,3,4,5)
x2 <- list(1,4,7,8)
x3 <- list(5,6)
x4 <- list(9,0,0,5,6,7)
myList <- list(x1, x2, x3, x4)
df <- data.frame(matrix(unlist(myList), nrow=length(myList), byrow = T))
X1 X2 X3 X4 X5 X6
 1  2  3  4  5  5
 1  4  7  8  8  8
 5  6  6  6  6  6
 9  0  0  5  6  7

我的方法是在执行代码之前完成列表:

首先我计算最大长度

max_len = max(sapply(myList, length))
然后我用重复的最后一个元素来完成每个列表

myList <- lapply(myList, function(x)c(x, rep(x[length(x)], max_len - length(x) )))
myList位于底端R

myList V1 V2 V4 V5 V6
#> 1  1  2  3  4  5  5
#> 2  1  4  7  8  8  8
#> 3  5  6  6  6  6  6
#> 4  9  0  0  5  6  7
还是咕噜

库(purrr)
myList%>%
映射(~c(.x,rep(tail(.x,1),max(length(myList))-length(.x)))%>%
映射(设置名称(.x,粘贴0('V',顺(.x)))
#>#tibble:4 x 6
#>V1 V2 V3 V4 V5 V6
#>        
#> 1  1.00  2.00  3.00  4.00  5.00  5.00
#> 2  1.00  4.00  7.00  8.00  8.00  8.00
#> 3  5.00  6.00  6.00  6.00  6.00  6.00
#> 4  9.00  0     0     5.00  6.00  7.00
myList <- lapply(myList, function(x)c(x, rep(x[length(x)], max_len - length(x) )))
df <- data.frame(matrix(unlist(myList), nrow=length(myList), byrow = T))