Les données struc­tu­rées sous forme de listes sont présentes dans dif­fé­rents langages de pro­gram­ma­tion. Les listes en R peuvent tout par­ti­cu­liè­re­ment s’avérer utiles pour regrouper des données R de types dif­fé­rents.

R Lists : à quoi servent-elles ?

Les listes sont des struc­tures de données po­ly­va­lentes. En R, elles cons­ti­tuent mêmeun type de données. Les listes se prêtent tout par­ti­cu­liè­re­ment aux en­vi­ron­ne­ments de pro­gram­ma­tion dy­na­miques, dans lesquels dif­fé­rents types d’éléments de données sont ajoutés et supprimés de façon flexible. Au contraire des vecteurs R, le type de données des éléments de liste n’a aucune im­por­tance ; la pos­si­bi­lité d’associer dif­fé­rents types de données au sein d’une même liste constitue d’ailleurs l’un des prin­ci­paux avantages des R Lists. Comme vous pouvez les emboîter à votre guise, les R Lists vous per­met­tent de re­pré­sen­ter des si­tua­tions complexes dans le code source.

Create lists in R : élaborer des R Lists

Fonction « list() »

Pour créer une R List simple, il vous suffit d’utiliser « list() », la fonction du même nom, en ren­seig­nant les éléments à ajouter à votre liste.

liste <- list(1, TRUE, "Hello World!", c(1,2,3,4))
R

Dans l’exemple de code ci-dessus, une liste avec quatre valeurs a été créée. Comme vous pouvez le voir, le type de données de ces valeurs n’est pas identique, mais elles peuvent toutes se retrouver dans la même liste.

R vous permet en outre de créer une liste composée d’éléments nommés, afin d’accéder plus fa­ci­le­ment à certains éléments de votre R List.

personne <-list(nom = "Paul Michel", age = 27, hobbies = c("Programmation, Cinema"))
R

Il est également possible de trans­mettre des listes à d’autres listes (en tant qu’éléments de celles-ci). Ainsi, dif­fé­rentes listes peuvent par exemple être re­grou­pées en un unique ensemble de données :

personne <- list(list(nom = "Paul Michel", age = 27, hobbies = c("Programmation, Cinéma")), list(nom = "Mia Petit", age = 32, hobbies = c("Théatre, Jeux vidéo")), list(nom = "Sarah Henry", age =23, hobbies = c("Sport, Musique")))
R

Créer des listes à partir de vecteurs

Vous pouvez aussi choisir de créer des listes à partir de vecteurs R. Pour ce faire, vous devez leur donner la forme d’une liste. En R, une fonction est également prévue à cet effet.

vecteur &lt;- c(1,2,3,4)
liste &lt;- as.list(vecteur)
R

Convertir des listes en struc­tures de données dif­fé­rentes

Les R Lists cons­ti­tuent une structure de données po­ly­va­lente, mais vous pouvez avoir besoin de struc­tures dif­fé­rentes pour des ap­pli­ca­tions spé­ci­fiques, notamment des vecteurs ou encore des Da­ta­Frames. Dans de tels cas, vos listes peuvent fa­ci­le­ment être con­ver­ties.

R List in vector : créer un vecteur à partir d’une liste

Utilisez la fonction « unlist() » pour convertir la liste concernée en un vecteur R. Cette fonction utilise une R List comme paramètre de transfert, et trans­forme celle-ci en un vecteur. La liste ainsi transmise à la fonction peut aussi être mul­ti­di­men­sion­nelle. Nous vous re­com­man­dons surtout de faire appel à la fonction « unlist() » si vous avez besoin de trans­po­ser des hié­rar­chies complexes en forme vec­to­rielle simple.

liste &lt;- list(1, 2, 3, 4)
vektor &lt;- unlist(liste)
R

Si vous trans­for­mez en vecteur une liste composée de dif­fé­rents types de données, celui-ci risque de se comporter de façon in­dé­si­rable et indéfinie, car il faut savoir qu’en R, les vecteurs sont uni­que­ment en mesure de stocker, par défaut, des données de même type. Nous vous con­seil­lons donc de ne faire appel à « unlist() » que si les les éléments présents dans votre liste sont des données du même type.

L’exemple de code suivant présente une liste dont toutes les valeurs sont as­si­mi­lées au même type de données, « character » en vue d’un stockage dans le vecteur R.

liste &lt;- list(1, TRUE, "Hello World!", c(1,2,3,4))
vector &lt;- unlist(liste)
R

R List to DataFrame : créer un DataFrame à partir d’une liste

En R, les Da­ta­Frames sont notamment utilisés pour présenter des ensembles de données sous forme de tableau. Ils s’avèrent tout par­ti­cu­liè­re­ment utiles pour convertir les listes mul­ti­di­men­sion­nelles en R Da­ta­Frames. Attention : dans ce cas de figure, les listes doivent comporter le même nombre d’éléments. Pour convertir une R List en DataFrame, R propose la fonction « data.frame() ». Vous devez ren­seig­ner la liste à convertir en tant que paramètre de transfert.

person &lt;- list(nom=c("Paul", "Mia", "Sarah"), age=c(27, 32, 23))
tabelle &lt;- data.frame(person)
print(tabelle)
R

Le DataFrame créé à partir du code ci-dessus se présente de la manière suivante :

nom age
1  Paul    27
2  Mia    32
3  Sarah    23
R

Accès aux éléments dans les R Lists

Pour accéder aux éléments de vos listes, vous pouvez choisir d’utiliser l’index ou, le cas échéant, le nom des éléments en question.

Accès grâce à l’index

Pour accéder aux éléments de la liste, vous devez utiliser l’opérateur R « [[]] » et y insérer l’index ou le nom cor­res­pon­dant.

liste &lt;- list(1, TRUE, "Hello World!", c(1,2,3,4))
print(liste[[2]])
R

Ce code renvoie alors le résultat « TRUE », soit le deuxième élément de la liste. Attention : en R, l’in­dexa­tion commence à 1. Vous avez déjà de l’ex­pé­rience dans ce domaine et vous avez déjà appris à pro­gram­mer ? Attention, vous êtes sus­cep­tible de faire des erreurs ! En effet, l’in­dexa­tion commence à 0 dans la majorité des autres langages de pro­gram­ma­tion.

Accès grâce au nom de l’élément

Comme nous le disions plus haut, vous pouvez nommer les éléments de votre R List. Par la suite et si né­ces­saire, vous pouvez utiliser ces noms pour accéder aux éléments cor­res­pon­dants. Deux solutions dif­fé­rentes s’offrent à vous pour accéder aux éléments grâce à leur nom : vous pouvez choisir d’entourer le nom de l’élément recherché (en tant que R String) par des crochets doubles, ou utiliser le symbole dollar (« $ ») suivi du nom en question. Vous trouverez ci-dessous un exemple de code il­lus­trant ces méthodes :

person &lt;-list(nm = "Paul Michel", age = 27, hobbies = c("Programmation, Cinéma"))
print(person [["nom"]])
print(person$nom)
R

Dans ces deux cas, l’ins­truc­tion « print » permet d’afficher à l’écran le résultat « “Paul Michel” ».

List of functions in R : quelles sont les prin­ci­pales fonctions ?

Vous tra­vail­lez avec des listes ? Plusieurs fonctions R peuvent vous être utiles si vous cherchez à réaliser certaines opé­ra­tions.

« append() »

La fonction « append() » vous permet d’ajouter des éléments à la fin de votre liste. Le premier paramètre de transfert de la fonction doit cor­res­pondre à la liste à laquelle l’élément doit être ajouté, lui-même précisé en tant que deuxième paramètre de transfert.

liste &lt;-list(1,2,3,4)
append(liste, 5)
R
Note

Si l’élément que vous souhaitez insérer a un nom, il vous suffit d’indiquer celui-ci au moment de l’appel de la fonction.

En R, la fonction de liste « append() » n’est pas l’unique solution qui s’offre à vous pour ajouter des éléments à votre liste. La plupart du temps, si vous ren­seig­nez un index en utilisant des doubles crochets (pour un index qui n’existe pas encore), cela vous fait gagner du temps :

liste &lt;-list(1,2,3,4)
liste[[5]] &lt;-5
R

« length() »

Si vous appelez la commande R « length() », vous con­naî­trez le nombre d’éléments présents dans votre liste. Pour cette fonction, vous devez indiquer la liste dont la longueur vous intéresse en tant que paramètre de transfert.

liste &lt;- list(1,2,3,4)
print(length(liste))
R

Con­ca­té­na­tion avec « c() »

Grâce à R, vous pouvez fusionner deux listes de manière à ce qu’elles n’en forment qu’une. Il convient ici d’utiliser la fonction « c() » et de ren­seig­ner les deux listes en tant que paramètre ; elle renverra alors une liste con­ca­té­née.

liste1 &lt;- list(1,2,3,4)
liste2 &lt;- list(5,6,7,8)
liste_contact &lt;- c(liste1, liste2)
R

« names() »

Vous avez créé une R List avec des noms ? Utilisez la fonction de liste en R « names() » pour afficher le nom des objets présents dans votre liste. Vous devez indiquer une liste à cette fonction en tant que paramètre de transfert.

person &lt;-list(nm = "Paul Michel", age = 27, hobbies = c("Programmation, Cinéma"))
identifiant &lt;- names(person)
R
Aller au menu principal