2009-11-16 16 views

Respuesta

128
+15

'longitudes (x)' (nótese el plural) devolverá la longitud de cada elemento de la lista . – AleRuete

+2

@AleRuete: ¡Debe agregar esto como respuesta! ¡Es muy útil! –

+3

gracias @SeanStayn, pero la pregunta está cerrada. – AleRuete

10

Pasé las edades tratando de resolver esto, pero es simple! Puede usar length(·). length(mylist) le dirá la cantidad de objetos que contiene mylist.

... y me acabo de dar cuenta de que alguien ya había respondido a esto, lo siento!

+1

Sigue siendo una respuesta, y sigue siendo válida, así que +1. – PaulHurleyuk

66

Recomendaciones para el R recién llegados como yo: ten cuidado, la siguiente es una lista de un solo objeto:

> mylist <- list (1:10) 
> length (mylist) 
[1] 1 

En tal caso no se busca la longitud de la lista, sino de su primer elemento:

> length (mylist[[1]]) 
[1] 10 

Esta es una lista "verdadero":

> mylist <- list(1:10, rnorm(25), letters[1:3]) 
> length (mylist) 
[1] 3 

Además, parece que R considera un hoja.de.datos como una lista:

> df <- data.frame (matrix(0, ncol = 30, nrow = 2)) 
> typeof (df) 
[1] "list" 

En tal caso, usted puede estar interesado en ncol() y nrow() en lugar de length():

> ncol (df) 
[1] 30 
> nrow (df) 
[1] 2 

Aunque length() también funcionará (pero es un truco cuando tus datos.marco tiene una sola columna):

> length (df) 
[1] 30 
> length (df[[1]]) 
[1] 2 
7

Vamos a crear una lista vacía (no es necesario, pero bueno saber):

> mylist <- vector(mode="list") 

Vamos a poner algunas cosas en él - 3 componentes/índices/etiquetas (lo que quieras llamarlo) cada uno con diferentes cantidades de elementos:

> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2)) 

Si le interesa sólo el número de componentes en una lista de uso:

> length(mylist) 
[1] 3 

Si usted está interesado en la longitud de los elementos en un componente específico de un uso lista: (ambos hacen referencia al mismo componente aquí)

length(mylist[[1]]) 
[1] 10 
length(mylist[["record1"]] 
[1] 10 

Si usted está interesado en la longitud de los elementos de las componentes de la lista de uso:

> sum(sapply(mylist,length)) 
[1] 17 
3

también puede utilizar unlist(), que a menudo es útil para el manejo de listas:

> 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 

no listados() es una forma sencilla de ejecutar otras funciones en las listas, así, como:

> sum(mylist) 
Error in sum(mylist) : invalid 'type' (list) of argument 

> sum(unlist(mylist)) 
[1] 45 
Cuestiones relacionadas