2009-11-16 9 views

risposta

128
+15

'lunghezza (x)' (notare il plurale) restituirà la lunghezza di ogni elemento della lista . – AleRuete

+2

@AleRuete: dovresti aggiungere questo come risposta! È molto utile! –

+3

grazie @SeanStayn ma la domanda è chiusa. – AleRuete

10

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!

+1

È ancora una risposta, e ancora valida, quindi +1. – PaulHurleyuk

66

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 
7

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 
3

è 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