Les listes en R : Collections d'objets hétérogènes

@joekakone

Joseph Konka @joekakone

03/03/2026 · 5 min

Apprenez à utiliser les listes en R, la structure de données la plus souple capable d'imbriquer des vecteurs, matrices, dataframes et modèles statistiques.

Alors que les vecteurs atomiques imposent que tous leurs éléments soient rigoureusement du même type, la liste est la structure la plus flexible de R : elle peut stocker des éléments de types et de dimensions totalement différents (des nombres, du texte, des vecteurs, des matrices, d'autres listes et même des fonctions entières !).

En R, la majorité des objets complexes — notamment les résultats des régressions linéaires (lm()) ou des tests d'hypothèses (t.test()) — sont des listes sous le capot.


1. Création d'une liste avec list()#

Pour construire une liste, on utilise la fonction list(), en nommant idéalement chaque élément pour en faciliter la manipulation future :

etudiant <- list(
  id = 1042,
  nom = "Claire Dupont",
  inscrit = TRUE,
  notes = c(14.5, 18, 12),
  adresse = list(ville = "Lyon", code_postal = "69001")
)

# Affichage de la structure globale avec str()
str(etudiant)

Sortie :

List of 5
 $ id     : num 1042
 $ nom    : chr "Claire Dupont"
 $ inscrit: logi TRUE
 $ notes  : num [1:3] 14.5 18 12
 $ adresse:List of 2
  ..$ ville      : chr "Lyon"
  ..$ code_postal: chr "69001"


2. L'art de l'indexation : [] vs [[]] vs $#

C'est l'un des points fondamentaux qui déroute souvent les débutants en R :

             ┌────────────────────────────────────────────────────────┐
             │                Indexation d'une Liste                  │
             ├────────────┬───────────────────────────────────────────┤
             │ liste[1]   │ Renvoie une SOUS-LISTE contenant          │
             │            │ le 1er élément.                           │
             ├────────────┼───────────────────────────────────────────┤
             │ liste[[1]] │ Renvoie le CONTENU RÉEL du 1er élément.   │
             ├────────────┼───────────────────────────────────────────┤
             │ liste$nom  │ Renvoie le CONTENU RÉEL de l'élément nommé│
             └────────────┴───────────────────────────────────────────┘

[!NOTE] L'analogie de la boîte de chocolats :
Si une liste est un carton contenant des boîtes de chocolats : * liste[1] vous donne un petit carton contenant la première boîte de chocolats. * liste[[1]] ouvre la boîte et vous donne directement le chocolat qui est à l'intérieur !

Démonstration :#

# Extraction par le nom ($)
etudiant$nom           # [1] "Claire Dupont" (vecteur caractère)
etudiant$notes         # [1] 14.5 18.0 12.0 (vecteur numérique)
mean(etudiant$notes)   # [1] 14.83333

# Accéder à un sous-élément imbriqué
etudiant$notes[2]      # La 2e note : [1] 18
etudiant$adresse$ville # [1] "Lyon"

# Différence entre crochet simple et double crochet
class(etudiant[1])     # [1] "list"
class(etudiant[[1]])   # [1] "numeric"

3. Modifier, ajouter et supprimer des éléments#

Une liste est mutable : vous pouvez l'enrichir à tout moment par simple affectation :

# Ajouter un nouvel élément
etudiant$filiere <- "Data Science"

# Modifier un élément existant
etudiant$id <- 2050

# Supprimer un élément en lui affectant NULL
etudiant$inscrit <- NULL

# Vérifier les noms des éléments restants
names(etudiant) # [1] "id" "nom" "notes" "adresse" "filiere"

Mise en pratique#

  1. Créez une liste nommée modele_stat comprenant les trois éléments suivants :
  2. nom : "Régression Linéaire"
  3. coefficients : un vecteur avec les valeurs c(2.4, 0.85, -1.2)
  4. r_deux : 0.94
  5. Extrayez le coefficient associé à la deuxième variable (0.85).
  6. Ajoutez à votre liste un élément significatif valant TRUE.
  7. Affichez la structure de votre liste à l'aide de la commande str(modele_stat).

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue