agregando NA para hacer que todos los elementos de la lista tengan la misma longitud

Estoy haciendo una serie de cosas en dplyr , tidyr , así que me gustaría seguir con una solución de tuberías si es posible.

Tengo una lista con números desiguales de elementos en cada componente:

 lolz <- list(a = c(2,4,5,2,3), b = c(3,3,2), c=c(1,1,2,4,5,3,3), d=c(1,2,3,1), e=c(5,4,2,2)) lolz $a [1] 2 4 5 2 3 $b [1] 3 3 2 $c [1] 1 1 2 4 5 3 3 $d [1] 1 2 3 1 $e [1] 5 4 2 2 

Me pregunto si hay un trazador de líneas limpio para llenar cada elemento con NA de modo que todos tengan la misma longitud que el elemento con los elementos máximos:

Tengo un trazador de líneas 2:

 lolz %>% lapply(length) %>% unlist %>% max -> mymax lolz %>% lapply(function(x) c(x, rep(NA, mymax-length(x)))) $a [1] 2 4 5 2 3 NA NA $b [1] 3 3 2 NA NA NA NA $c [1] 1 1 2 4 5 3 3 $d [1] 1 2 3 1 NA NA NA $e [1] 5 4 2 2 NA NA NA 

Preguntándome si me estoy perdiendo algo más rápido / más elegante.

Podrías usar

 lapply(lolz, `length<-`, max(lengths(lolz))) # $a # [1] 2 4 5 2 3 NA NA # # $b # [1] 3 3 2 NA NA NA NA # # $c # [1] 1 1 2 4 5 3 3 # # $d # [1] 1 2 3 1 NA NA NA # # $e # [1] 5 4 2 2 NA NA NA 

o

 n <- max(lengths(lolz)) lapply(lolz, `length<-`, n)