Sto facendo una serie di cose in dplyr
, tidyr
, quindi vorrei mantenere con una soluzione di connessione, se possibile.aggiunta di NA per rendere tutti gli elementi di lista uguali lunghezza
Ho una lista con i numeri dispari di elementi in ogni 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
Mi chiedo se c'è un accurato uno di linea per riempire ogni elemento con AN tale che tutti sono della stessa lunghezza l'elemento con gli articoli massimi:
ho un 2 fodera:
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
Chiedendosi se mi manca qualcosa più veloce/più elegante.
mai realizzato si può solo sovrascrivere la lunghezza di un oggetto. simpatico! – MichaelChirico
Non lo sapevo neanche - qualcuno ha qualche riferimento a ciò che sta succedendo con questo funzionalmente? cioè altri usi di ''length <-''? – jalapic
È solo un breve modulo per 'lapply (lolz, function (x) {length (x) <- max (lengths (lolz)); x})'. E 'length (x) <- value' _" può essere usato per resettare la lunghezza di un vettore.Se un vettore viene abbreviato, i valori extra vengono scartati e quando un vettore viene allungato, viene riempito alla sua nuova lunghezza con NA (Nul per i vettori grezzi) "_ (vedi'? length') – lukeA