Structures conditionnelles en R : if, else et ifelse vectorisé

@joekakone

Joseph Konka @joekakone

03/03/2026 · 5 min

Maîtrisez les structures de choix en R : le bloc classique if/else pour les scalaires et la fonction vectorisée ifelse() pour transformer des colonnes entières de données.

En programmation, les structures conditionnelles permettent d'exécuter un bloc de code précis uniquement si une condition logique donnée est vérifiée.

En R, il existe deux approches fondamentales à bien distinguer : 1. La structure classique if ... else : conçue pour évaluer une condition sur une valeur unique (scalaire). 2. La fonction ifelse() : conçue pour évaluer une condition sur un vecteur entier, élément par élément.


1. La structure classique : if, else if et else#

La syntaxe d'un bloc conditionnel en R s'écrit avec des parenthèses pour la condition et des accolades {} pour les instructions :

note <- 14

if (note >= 16) {
  print("Mention Très Bien")
} else if (note >= 12) {
  print("Mention Bien ou Assez Bien")
} else if (note >= 10) {
  print("Admis sans mention")
} else {
  print("Ajourné")
}

Sortie :

[1] "Mention Bien ou Assez Bien"

[!WARNING] Attention à l'emplacement du else :
En R, le mot-clé else doit obligatoirement se trouver sur la même ligne que l'accolade fermante } du bloc précédent :

# CORRECT
if (x > 0) {
  print("Positif")
} else {
  print("Négatif ou nul")
}


2. Opérateurs logiques : & / | vs && / ||#

R possède deux jeux d'opérateurs logiques :

Opérateur Comportement Usage typique
& et | Vectorisés : Évalue la condition sur tous les éléments d'un vecteur. Dans les filtres de données (df[x > 0 & y < 10, ]).
&& et || Scalaires à court-circuit : N'évalue que le premier élément. Dans les blocs de contrôle if (cond1 && cond2).
age <- 25
permis <- TRUE

if (age >= 18 && permis) {
  print("Autorisé à louer un véhicule")
}

3. La condition vectorisée : ifelse()#

C'est l'une des fonctions les plus fréquemment utilisées en analyse de données. Elle prend trois arguments : 1. Une condition vectorielle. 2. La valeur à renvoyer si la condition est TRUE. 3. La valeur à renvoyer si la condition est FALSE.

notes_classe <- c(8, 14, 11, 7, 19, 10)

# Évaluation instantanée sur tous les élèves
resultats <- ifelse(notes_classe >= 10, "Admis", "Recalé")
print(resultats)

Sortie :

[1] "Recalé" "Admis"  "Admis"  "Recalé" "Admis"  "Admis" 

On peut également imbriquer plusieurs ifelse() pour gérer plus de deux catégories :

statuts <- ifelse(notes_classe >= 16, "Excellent",
             ifelse(notes_classe >= 10, "Moyen", "Insuffisant"))

Mise en pratique#

  1. Déclarez une variable solde <- 1250.
  2. Écrivez un bloc if / else qui affiche "Solde créditeur" si solde > 0, "Solde nul" si solde == 0, et "Découvert autorisé" sinon.
  3. Soit le vecteur temperatures <- c(12, -3, 24, 0, -8, 31). Utilisez la fonction vectorisée ifelse() pour créer un vecteur climat valant "Gel" si la température est négative ou nulle, et "Doux" sinon.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue