Contar el número de objetos en la lista [cerrado]

99

¿Función R que devolverá el número de elementos en una lista?

Karl
fuente

Respuestas:

170

longitud (x)

Obtiene o establece la longitud de los vectores (incluidas las listas) y los factores, y de cualquier otro objeto R para el que se ha definido un método.

longitudes (x)

Obtenga la longitud de cada elemento de una lista o vector atómico (is.atomic) como un vector entero o numérico.

Joey
fuente
85

Consejo para Rrecién llegados como yo: cuidado, la siguiente es una lista de un solo objeto  :

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

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

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

Esta es una lista "verdadera":

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

Además, parece que Rconsidera un data.frame como una lista:

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

En tal caso, es posible que le interese ncol()y en nrow()lugar de length() :

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

Aunque length()también funcionará (pero es un truco cuando su data.frame tiene solo una columna):

> length (df)
[1] 30
> length (df[[1]])
[1] 2
Skippy le Grand Gourou
fuente
12

Pasé años tratando de resolver esto, ¡pero es simple! Puede utilizar length(·). length(mylist)le dirá la cantidad de objetos que mylistcontiene.

... y acabo de darme cuenta de que alguien ya había respondido esto- ¡lo siento!

luego
fuente
9

Creemos una lista vacía (no es obligatorio, pero es bueno saberlo):

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

Pongamos algunas cosas en él: 3 componentes / índices / etiquetas (como quieras llamarlo) cada uno con diferentes cantidades de elementos:

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

Si está interesado solo en la cantidad de componentes en una lista, use:

> length(mylist)
[1] 3

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

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

Si está interesado en la longitud de todos los elementos en todos los componentes de la lista, utilice:

> sum(sapply(mylist,length))
[1] 17
Jeff Kraus
fuente
7

También puede usar unlist(), que a menudo es útil para manejar 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

unlist () es una forma sencilla de ejecutar también otras funciones en listas, como:

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

> sum(unlist(mylist))
[1] 45
user6062513
fuente