Combinare (cbind) vettori di diversa lunghezza

Ho diversi vettori di lunghezza disuguale e vorrei cbind . Ho messo i vettori in una lista e ho cercato di combinare l’uso di do.call(cbind, ...) :

 nm <- list(1:8, 3:8, 1:5) do.call(cbind, nm) # [,1] [,2] [,3] # [1,] 1 3 1 # [2,] 2 4 2 # [3,] 3 5 3 # [4,] 4 6 4 # [5,] 5 7 5 # [6,] 6 8 1 # [7,] 7 3 2 # [8,] 8 4 3 # Warning message: # In (function (..., deparse.level = 1) : # number of rows of result is not a multiple of vector length (arg 2) 

Come previsto, il numero di righe nella matrice risultante è la lunghezza del vettore più lungo e i valori dei vettori più brevi vengono riciclati per compensare la lunghezza.

Invece mi piacerebbe tamponare i vettori più corti con i valori di NA per ottenere la stessa lunghezza del vettore più lungo. Mi piacerebbe che la matrice assomigli a questo:

 # [,1] [,2] [,3] # [1,] 1 3 1 # [2,] 2 4 2 # [3,] 3 5 3 # [4,] 4 6 4 # [5,] 5 7 5 # [6,] 6 8 NA # [7,] 7 NA NA # [8,] 8 NA NA 

Come posso fare questo?