Fonction R qui renverra le nombre d'éléments dans une liste?
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.
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.
Conseil aux R
nouveaux 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 R
considè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
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 mylist
contient.
... et vient de réaliser que quelqu'un avait déjà répondu à cela - désolé!
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
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