Comment stocker des informations dans R avec les listes ?

Parmi les différents types de données dans R, les listes sont les solutions les plus flexibles. Elles permettent de stocker en série des données de types différents et d’y accéder facilement.

Pour créer une liste, il suffit de faire appel à list() et de renseigner dedans les données à stocker :

list( "aaa", 12, 0.345, c("a","b","c"))

Et il est possible de donner un nom à chaque information. Pour connaitre les noms des infos de la liste, la fonction à utiliser est names()

maListe <- list( texte="aaa", numero=12, decimal=0.345, vecteur=c("a","b","c"))
names(maListe)

Pour accéder à une information ensuite, il s’agit soit de faire reference à son index (l’index commence à 1, pas 0 comme d’autres langages), soit de faire référence au nom donné :

# Le resultat est sous forme de liste (en conservant l'eventuel nom)
maListe[1]
maListe["texte"]

Si on souhaite avoir un résultat sous forme de vecteur, il s’agit alors de « descendre au niveau inférieur » :

maListe[[1]]
maListe[["texte"]]

Pour convertir une liste en vecteur (ce qui implique de tout « mettre à plat »), il s’agit d’utiliser unlist(). A savoir, la « mise à plat » va impacter le nom donné aux infos quand il y a plusieurs niveaux (par exemple pour le cas d’un vecteur dans une liste). Les nouveaux noms seront incrémentés d’un numero (par ex: vecteur devient vecteur1, vecteur2, etc) :

unlist(maListe)

Travailler avec une liste va faciliter la tâche notamment pour 2 actions :

  • Verifier si une valeur est présente dans la liste
  • Rajouter une nouvelle valeur dans la liste

Pour verifier si une valeur est dans la liste, la méthode à utiliser est %in% (elle renvoie TRUE si c’est le cas) :

"aaa" %in% maListe

Pour rajouter une nouvelle valeur dans la liste, il s’agit d’utiliser append() (si besoin de definir un nom, il s’agit de passer par names()) :

maListe <- append( maListe, "nouvelle_valeur")
names(maListe)[length(maListe)] <- "nouvelle_info"

Pour + d’infos :

https://www.w3schools.com/r/r_lists.asp

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *