Qualcuno conosce una funzione R che restituirà il numero di elementi in un elenco?Contare il numero di oggetti nell'elenco
risposta
ho trascorso età cercando di capire questo fuori ma è semplice! È possibile utilizzare length(·)
. length(mylist)
ti dirà il numero di oggetti mylist
contiene.
... e appena realizzato qualcuno aveva già risposto a questa- scusa!
È ancora una risposta, e ancora valida, quindi +1. – PaulHurleyuk
Consigli per R
i nuovi arrivati come me: attenzione, il seguente è un elenco di un singolo oggetto:
> mylist <- list (1:10)
> length (mylist)
[1] 1
In tal caso non siete alla ricerca per la lunghezza della lista, ma della sua primo elemento:
> length (mylist[[1]])
[1] 10
si tratta di una "vera" lista:
> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3
Inoltre, sembra che R
considera un data.frame come un elenco:
> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"
In tal caso si può essere interessati a ncol()
e nrow()
piuttosto che length()
:
> ncol (df)
[1] 30
> nrow (df)
[1] 2
Anche se length()
funzionerà anche (ma è un trucco quando i tuoi dati.telaio ha una sola colonna):
> length (df)
[1] 30
> length (df[[1]])
[1] 2
Creiamo una lista vuota (non richiesto, ma buono da sapere):
> mylist <- vector(mode="list")
Mettiamola alcune cose in esso - 3 componenti/indici/tag (qualunque cosa si voglia chiamare) ciascuno con differenti quantità di elementi:
> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
Se siete interessati solo il numero di componenti in un uso lista:
0.123.> length(mylist)
[1] 3
Se siete interessati nella lunghezza di elementi in un componente specifico di un uso lista: (sia di riferimento lo stesso componente qui)
length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10
Se siete interessati nella lunghezza di tutti gli elementi in tutto componenti della lista uso:
> sum(sapply(mylist,length))
[1] 17
è anche possibile utilizzare unlist()
, che è spesso utile per le liste di movimentazione:
> mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9))
> mylist
$A
[1] 1 2 3
$B
[1] 4 5 6
$C
[1] 7 8 9
> unlist(mylist)
A1 A2 A3 B1 B2 B3 C1 C2 C3
1 2 3 4 5 6 7 8 9
> length(unlist(mylist))
[1] 9
non elencati() è un modo semplice di eseguire altre funzioni di liste così, ad esempio:
> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument
> sum(unlist(mylist))
[1] 45
'lunghezza (x)' (notare il plurale) restituirà la lunghezza di ogni elemento della lista . – AleRuete
@AleRuete: dovresti aggiungere questo come risposta! È molto utile! –
grazie @SeanStayn ma la domanda è chiusa. – AleRuete