Make all vectors of the same length beforehand
library(purrr)
x <- c(1,2,3)
y <- c(4,5,6,7)
z <- c(8,9,10,11,12)
vector_list <- list(x, y, z)
longest <- max(map_int(vector_list, length))
map_dfr(vector_list,
~ {
length(.x) <- longest
.x %>% set_names(paste0("X", 1:longest))
})
#> # A tibble: 3 × 5
#> X1 X2 X3 X4 X5
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 2 3 NA NA
#> 2 4 5 6 7 NA
#> 3 8 9 10 11 12
Created on 2021-10-01 by the reprex package (v2.0.1)