¿Función R que devolverá el número de elementos en una lista?
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.
Obtenga la longitud de cada elemento de una lista o vector atómico (is.atomic) como un vector entero o numérico.
Consejo para R
recié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 R
considera 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
Pasé años tratando de resolver esto, ¡pero es simple! Puede utilizar length(·)
. length(mylist)
le dirá la cantidad de objetos que mylist
contiene.
... y acabo de darme cuenta de que alguien ya había respondido esto- ¡lo siento!
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
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