R Lists: créer ses propres listes en R

Les données structurées sous forme de listes sont présentes dans différents langages de programmation. Les listes en R peuvent tout particulièrement s’avérer utiles pour regrouper des données R de types différents.

R Lists : à quoi servent-elles ?

Les listes sont des structures de données polyvalentes. En R, elles constituent mêmeun type de données. Les listes se prêtent tout particulièrement aux environnements de programmation dynamiques, dans lesquels diffé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 importance ; la possibilité d’associer différents types de données au sein d’une même liste constitue d’ailleurs l’un des principaux avantages des R Lists. Comme vous pouvez les emboîter à votre guise, les R Lists vous permettent de représenter des situations 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 renseignant 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 facilement à certains éléments de votre R List.

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

Il est également possible de transmettre des listes à d’autres listes (en tant qu’éléments de celles-ci). Ainsi, différentes listes peuvent par exemple être regroupé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 <- c(1,2,3,4)
liste <- as.list(vecteur)
R

Convertir des listes en structures de données différentes

Les R Lists constituent une structure de données polyvalente, mais vous pouvez avoir besoin de structures différentes pour des applications spécifiques, notamment des vecteurs ou encore des DataFrames. Dans de tels cas, vos listes peuvent facilement être converties.

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 transforme celle-ci en un vecteur. La liste ainsi transmise à la fonction peut aussi être multidimensionnelle. Nous vous recommandons surtout de faire appel à la fonction « unlist() » si vous avez besoin de transposer des hiérarchies complexes en forme vectorielle simple.

liste <- list(1, 2, 3, 4)
vektor <- unlist(liste)
R

Si vous transformez en vecteur une liste composée de différents types de données, celui-ci risque de se comporter de façon indésirable et indéfinie, car il faut savoir qu’en R, les vecteurs sont uniquement en mesure de stocker, par défaut, des données de même type. Nous vous conseillons 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 assimilées au même type de données, « character » en vue d’un stockage dans le vecteur R.

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

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

En R, les DataFrames sont notamment utilisés pour présenter des ensembles de données sous forme de tableau. Ils s’avèrent tout particulièrement utiles pour convertir les listes multidimensionnelles en R DataFrames. 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 renseigner la liste à convertir en tant que paramètre de transfert.

person <- list(nom=c("Paul", "Mia", "Sarah"), age=c(27, 32, 23))
tabelle <- 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 correspondant.

liste <- 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’indexation commence à 1. Vous avez déjà de l’expérience dans ce domaine et vous avez déjà appris à programmer ? Attention, vous êtes susceptible de faire des erreurs ! En effet, l’indexation commence à 0 dans la majorité des autres langages de programmation.

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écessaire, vous pouvez utiliser ces noms pour accéder aux éléments correspondants. Deux solutions diffé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 illustrant ces méthodes :

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

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

List of functions in R : quelles sont les principales fonctions ?

Vous travaillez avec des listes ? Plusieurs fonctions R peuvent vous être utiles si vous cherchez à réaliser certaines opérations.

« 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 correspondre à la liste à laquelle l’élément doit être ajouté, lui-même précisé en tant que deuxième paramètre de transfert.

liste <-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 renseignez un index en utilisant des doubles crochets (pour un index qui n’existe pas encore), cela vous fait gagner du temps :

liste <-list(1,2,3,4)
liste[[5]] <-5
R

« length() »

Si vous appelez la commande R « length() », vous connaî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 <- list(1,2,3,4)
print(length(liste))
R

Concaténation 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 renseigner les deux listes en tant que paramètre ; elle renverra alors une liste concaténée.

liste1 <- list(1,2,3,4)
liste2 <- list(5,6,7,8)
liste_contact <- 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 <-list(nm = "Paul Michel", age = 27, hobbies = c("Programmation, Cinéma"))
identifiant <- names(person)
R