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

99

Fonction R qui renverra le nombre d'éléments dans une liste?

Karl
la source

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.

Joey
la source
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
Skippy le Grand Gourou
la source
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é!

anon
la source
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
Jeff Kraus
la source
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
user6062513
la source