Cours

La fonction "ifelse()" est l'alternative condensée à l'instruction if-else en R. Elle est de plus vectorisée, ce qui rend son exécution plus rapide : tous les éléments du vecteur sont traités en une seule fois, plutôt que valeur par valeur.
Syntaxe
La syntaxe de la fonction "ifelse()" en R est la suivante :
ifelse(expression_logique, a, b)
Les arguments de "ifelse" signifient :
1. expression_logique : un vecteur logique en entrée, qui renverra en sortie un vecteur de même taille.
2. a : valeur retournée lorsque expression_logique est TRUE.
3. b : valeur retournée lorsque expression_logique est FALSE.
Exemple (pair ou impair)
Voyons rapidement un exemple où le code ci-dessous vérifie si des nombres sont impairs ou pairs. "v" est un vecteur contenant une liste de nombres. Dans la fonction "ifelse", l'expression "v%%2==1" vérifie si le reste de chaque nombre de "v" vaut un, et si c'est TRUE affiche "odd", sinon (FALSE) affiche "even".
v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
- 'even'
- 'odd'
- 'even'
- 'odd'
- 'even'
Le code ci-dessus produit la sortie :
'even' 'odd' 'even' 'odd' 'even'
En interne, il génère un vecteur logique c(FALSE, TRUE, FALSE, TRUE, FALSE). Le premier paramètre formera un vecteur de chaînes c("odd","odd","odd","odd","odd"), tandis que le second produira c("even","even","even","even","even"). Enfin, chaque élément dont la condition est TRUE est remplacé par 'odd', et chaque FALSE par 'even'.
Exemple (réussite ou échec)
L'exemple ci-dessous illustre l'utilisation de "ifelse()" avec un DataFrame. Si un·e étudiant·e obtient plus de 40 points, il/elle est considéré·e comme "Pass", sinon "Fail" à l'examen.
Créons rapidement un Data Frame où la colonne "Student" contient les prénoms ("Ron", "Jake", "Ava", "Sophia", "Mia"). Une autre colonne, "Marks", contient les notes (35, 75, 45, 30, 85). Enfin, les deux colonnes sont combinées pour former un data frame stocké dans "x".
x <- data.frame("Student" = c("Ron","Jake","Ava","Sophia","Mia"),"Marks" = c(35,75,45,30,85))
str(x)
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
Le code ci-dessus affiche la structure du Data Frame via "str(x)" : 5 observations et 2 variables, avec les valeurs correspondantes pour Student et Marks.
x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)
La sortie est la suivante :
Student Marks Result
1 Ron 35 Fail
2 Jake 75 Pass
3 Ava 45 Pass
4 Sophia 30 Fail
5 Mia 85 Pass
Dans le code ci-dessus, la variable 'x$Result' sert à ajouter une nouvelle colonne "Result" au Data Frame. La fonction "ifelse()" évalue l'expression 'x$"Marks">40' : elle parcourt les valeurs de Marks et fixe "Result" à "Pass" lorsque la note est supérieure à 40, sinon à "Fail".
Félicitations
Félicitations, vous êtes arrivé·e au bout de ce tutoriel !
Vous avez découvert la fonction ifelse() de R, sa syntaxe, comment déterminer si un nombre est pair ou impair, et enfin un exemple pour indiquer si un·e étudiant·e a réussi ou échoué à un examen.
Pour aller plus loin avec R, retrouvez toutes nos ressources R ici.
Consultez aussi notre tutoriel Utiliser des fonctions en R.