Compter le nombre d'objets dans la liste [fermé]


Réponses:


170

longueur (x)

Obtenez ou définissez la longueur des vecteurs (y compris les listes) et des facteurs, et de tout autre objet R pour lequel une méthode a été définie.

longueurs (x)

Obtenez la longueur de chaque élément d'une liste ou d'un vecteur atomique (is.atomic) sous la forme d'un vecteur entier ou numérique.


85

Conseil aux Rnouveaux arrivants comme moi: attention, voici une liste d' un seul objet  :

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

Dans un tel cas, vous ne recherchez pas la longueur de la liste, mais son premier élément:

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

C'est une "vraie" liste:

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

Aussi, il semble que Rconsidère un data.frame comme une liste:

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

Dans un tel cas, vous pourriez être intéressé par ncol()et nrow()plutôt que length() :

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

Bien length()aussi travailler (mais il est une astuce lorsque votre data.frame a une seule colonne):

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

12

J'ai passé des siècles à essayer de comprendre cela, mais c'est simple! Vous pouvez utiliser length(·). length(mylist)vous dira le nombre d'objets mylistcontient.

... et vient de réaliser que quelqu'un avait déjà répondu à cela - désolé!


9

Créons une liste vide (non obligatoire, mais bon à savoir):

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

Mettons quelques trucs dedans - 3 composants / index / balises (comme vous voulez l'appeler) chacun avec des quantités différentes d'éléments:

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

Si vous êtes intéressé uniquement par le nombre de composants dans une liste, utilisez:

> length(mylist)
[1] 3

Si vous êtes intéressé par la longueur des éléments dans un composant spécifique d'une liste, utilisez: (les deux font référence au même composant ici)

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

Si vous êtes intéressé par la longueur de tous les éléments dans tous les composants de la liste, utilisez:

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

7

Vous pouvez également utiliser unlist(), ce qui est souvent utile pour gérer les listes:

> 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 () est un moyen simple d'exécuter également d'autres fonctions sur des listes, telles que:

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

> sum(unlist(mylist))
[1] 45
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.