Cours
Opérateurs relationnels
Les opérateurs relationnels, également appelés comparateurs, permettent d’évaluer la relation entre deux objets R. Par exemple, vous pouvez vérifier si deux objets sont égaux avec l’opérateur == (double égal). Un test logique qui est TRUE des deux côtés renverra la valeur logique TRUE, puisque TRUE est égal à TRUE, comme ci-dessous.
TRUE == TRUE
TRUE
En revanche, si vous avez TRUE d’un côté et FALSE de l’autre, le résultat sera FALSE.
TRUE == FALSE
FALSE
Au-delà des variables logiques, vous pouvez tester l’égalité d’autres types.
Comparons des chaînes et des nombres.
100 == 100
TRUE
100 == 200
FALSE
'tutorial' == 'R'
FALSE
- L’opposé de l’opérateur d’égalité est l’opérateur de
différence, noté!=(point d’exclamation suivi d’un égal).
Toutes les conditions qui étaient auparavant FALSE deviennent alors TRUE : vérifions !
100 != 200
TRUE
'tutorial' != 'R'
TRUE
TRUE != FALSE
TRUE
De même, l’opérateur de différence s’applique aux nombres et à d’autres objets R comme les matrices, vecteurs et listes.
-
Si vous souhaitez savoir lequel de deux objets R est supérieur ou inférieur à l’autre, utilisez simplement
<et>(inférieur à / supérieur à).Voyons d’abord un exemple numérique.
2 > 10
FALSE
-200 < 0
TRUE
Il va de soi que 2 n’est pas supérieur à 10 et que -200 est inférieur à 0. Mais qu’en est-il des chaînes ? Voyons comment R s’en sort.
R se base sur l’ordre alphabétique pour comparer les chaînes ou caractères.
Dans l’exemple ci-dessous, comme t vient après R dans l’alphabet, t est considéré comme supérieur à R.
'tutorial' > 'RRRRRRRRR'
TRUE
Notez également que, en R comme dans la plupart des langages, TRUE est interprété numériquement comme 1 et FALSE comme 0. Dans cette logique, TRUE est donc supérieur à FALSE.
TRUE > FALSE
TRUE
- Vous pouvez aussi tester si un objet R est supérieur ou égal
(>=)(ou inférieur ou égal<=) à un autre. Pour cela, combinez le signe inférieur/supérieur avec l’égal. Si l’une des deux conditions (inférieur ou égal / supérieur ou égal) est TRUE, l’ensemble de la condition est TRUE.
5 >= 5 # 5 n'est pas strictement supérieur à 5 mais égal, donc TRUE.
TRUE
5 >= 10
FALSE
Vous pouvez en savoir plus sur les types de données R dans ce tutoriel DataCamp. R gère très bien les listes, matrices et vecteurs.
Les comparateurs R fonctionnent-ils avec les vecteurs ? Voyons.
Supposons un vecteur ligne enregistrant le nombre de vues de votre dernier tutoriel DataCamp sur 10 jours. Vous voulez identifier les jours avec au moins 100 vues. Utilisez l’opérateur « supérieur ou égal ».
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
length(datacamp_views)
10
datacamp_views >= 100
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- TRUE
- FALSE
Comme on le voit, pour les 1er, 4e, 7e et 9e éléments, le résultat est TRUE : ces jours-là, les vues étaient supérieures ou égales à 100.
De même, vous pouvez comparer deux vecteurs, voire deux matrices.
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
De cette manière, vous pouvez créer une petite application pour savoir quand vos vues DataCamp dépassent celles de YouTube, ou l’inverse.
En R, la comparaison se fait élément par élément. Par exemple, pour le premier élément de chaque vecteur, DataCamp vaut 100 et l’autre 10 ; le résultat est donc TRUE.
datacamp_views > youtube_views
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- TRUE
- TRUE
- TRUE
- TRUE
- TRUE
Comparons rapidement deux expressions numériques. Si vous vous souvenez de la règle BODMAS/PEMDAS (priorité aux parenthèses, division, multiplication, addition, soustraction), vous l’appliquerez pour évaluer ces deux expressions R.
-6 * 5 + 2 >= -10 + 1 # à gauche, on fait d'abord la multiplication puis l'addition (BODMAS)
FALSE
Maîtrisez vos compétences en matière de données avec DataCamp
Plus de 10 millions de personnes apprennent Python, R, SQL et d'autres compétences techniques grâce à nos cours pratiques élaborés par des experts du secteur.

Comparer des matrices
La capacité de R à comparer différentes structures de données ne s’arrête pas aux vecteurs. Les matrices et les opérateurs relationnels fonctionnent tout aussi bien ensemble !
Plutôt que des vecteurs (comme dans l’exemple précédent), les données DataCamp et YouTube sont maintenant stockées dans une matrice appelée views. La première ligne contient les informations DataCamp, la seconde celles de YouTube. Vous utiliserez la fonction matrix de R pour créer cette matrice à partir des vecteurs datacamp et youtube définis plus haut.
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
views <- matrix(c(datacamp_views, youtube_views), nrow = 2, byrow = TRUE)
views
| 100 | 20 | 5 | 200 | 60 | 88 | 190 | 33 | 290 | 64 |
| 10 | 20 | 1000 | 64 | 100 | 9 | 19 | 3 | 90 | 4 |
Identifions les positions où les vues, côté DataCamp comme YouTube, sont égales à 20.
views == 20
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
Parfait ! Maintenant que vous maîtrisez les opérateurs relationnels, passons aux opérateurs logiques.
Opérateurs logiques
R vous permet de combiner les résultats des opérateurs relationnels grâce aux opérateurs logiques suivants :
- opérateur
AND( & ) - opérateur
OR( | ) - opérateur
NOT( ! )
Passons-les en revue.
- Opérateur AND : comme dans tout langage de programmation, l’opérateur AND de R prend deux valeurs logiques et renvoie TRUE uniquement si les deux sont vraies ; sinon il renvoie FALSE.
Voyons quelques exemples parlants.
TRUE & TRUE # 1.1 = 1
TRUE
TRUE & FALSE # 1.0 = 0
FALSE
FALSE & FALSE # 0.0 = 0
FALSE
FALSE & TRUE # 0.1 = 0
FALSE
Vous pouvez aussi utiliser le résultat de comparateurs plutôt que des valeurs logiques explicites.
x <- 100
x < 200 & x >= 100 # x est bien < 200 et ≥ 100, donc TRUE.
TRUE
x < 200 & x > 100 # ici FALSE, car la seconde comparaison (x > 100) est fausse.
FALSE
- Opérateur OR : similaire à AND, mais l’expression OR est TRUE si au moins l’une des deux valeurs logiques est TRUE.
Voyons quelques exemples parlants.
TRUE | TRUE # 1 + 1 = 1
TRUE
TRUE | FALSE # 1 + 0 = 1
TRUE
FALSE | FALSE # 0 + 0 = 0
FALSE
FALSE | TRUE # 0 + 1 = 1
TRUE
Reprenons le même exemple numérique ; cette fois, le résultat diffère.
x <- 100
x < 200 | x > 100 # TRUE car la première comparaison (x < 200) est vraie.
TRUE
- Opérateur NOT : le plus simple à comprendre : il nie la valeur logique à laquelle il s’applique, c’est l’opposé.
Quelques exemples :
a = 1
!a # renvoie FALSE : non de 1 correspond à 0, donc FALSE.
FALSE
a = 0
!a # ici TRUE : a = 0 et non de 0 vaut 1.
TRUE
Voyons des cas utiles avec les fonctions natives de R.
is.numeric(5) # renvoie TRUE car 5 est numérique
TRUE
!is.numeric(5) # la négation renvoie FALSE
FALSE
is.numeric('aditya')
FALSE
L’exemple ci-dessous est utile quand vous traitez un mélange de nombres et de chaînes et souhaitez filtrer les chaînes (caractères) pour ne conserver que les données numériques.
!is.numeric('aditya')
TRUE
Terminons en voyant comment les opérateurs logiques fonctionnent avec les vecteurs et matrices.
a <- c(FALSE, TRUE, FALSE)
b <- c(TRUE, TRUE, FALSE)
a & b # opérateur AND
- FALSE
- TRUE
- FALSE
a | b # opérateur OR
- TRUE
- TRUE
- FALSE
Comme le montrent ces sorties, tout comme pour les comparateurs, les opérateurs logiques s’appliquent élément par élément.
En revanche, l’opérateur NOT ne s’applique qu’à un seul vecteur à la fois, ou au résultat d’une opération sur deux vecteurs.
!a
- TRUE
- FALSE
- TRUE
!b
- FALSE
- FALSE
- TRUE
Dans l’exemple ci-dessous, NOT est appliqué au résultat de a | b (placé entre parenthèses). On parle aussi d’opérateur NOR (Not-OR).
!(a | b) # opérateur NOR
- FALSE
- FALSE
- TRUE
Avant de passer aux instructions conditionnelles, faisons un petit exercice.
Reprenez le vecteur des vues du tutoriel DataCamp défini plus haut. Extrayez-en le dernier élément avec la fonction tail de R.
last <- tail(datacamp_views,1)
print (last)
[1] 64
Vérifiez si ce dernier élément est strictement inférieur à 100 ou supérieur à 100.
last < 100 | last > 100
TRUE
Puisque la dernière valeur est inférieure à 100, l’une des deux conditions est satisfaite : le résultat est donc TRUE.
Passons au dernier thème de ce tutoriel : les instructions conditionnelles !
Instructions conditionnelles
Vous avez vu les opérateurs relationnels (pour relier des objets R entre eux) et les opérateurs logiques (pour combiner des valeurs logiques). R permet de combiner ces opérateurs et d’utiliser le résultat pour piloter le comportement de vos scripts. Entrons dans les instructions if et else.
La syntaxe de if est la suivante : if(condition){ // expression } L’instruction if prend une condition (entre parenthèses) basée sur un opérateur relationnel ou logique ; si cette condition est TRUE, le code R entre accolades est exécuté. Simple, n’est-ce pas ?
Exemple :
Supposons une variable x égale à -10. Vous testez si x est supérieur à zéro et vous nie(z) cette condition avec NOT. Comme la condition est TRUE, le code entre accolades s’exécute.
x <- -10
if (!x > 0){
print("x is a negative number")
}
[1] "x is a negative number"
Si vous supprimez NOT, la condition devient FALSE et le code entre accolades ne s’exécute pas.
if (x > 0){
print("x is a positive number")
}
La syntaxe de else est : if(condition){ // expression1 }else{ // expression2 } Contrairement à if, else n’a pas de condition propre : il s’utilise avec if. Le code associé à else s’exécute uniquement si la condition du if est FALSE.
Reprenons l’exemple précédent pour illustrer else.
x <- -10
if (x > 0){
print("x is a positive number")
}else{
print("x is a negative number")
}
[1] "x is a negative number"
Ici, la condition du if étant FALSE, c’est le bloc else qui s’exécute.
Entre if et else, vous pouvez insérer else if. Il s’exécute lorsque la condition du if n’est pas satisfaite. En bref, else arrive en dernier : if(condition){ // expression1 }else if(condition){ // expression2 }else{ // expression3 }
x <- 0
if (x > 0){
print("x is a positive number")
}else if (x == 0){
print("x is zero")
}else{
print("x is a negative number")
}
[1] "x is zero"
On recourt souvent à else if lorsque les conditions ne sont pas mutuellement exclusives (elles peuvent être vraies en même temps). Exemple :
x <- 12
if (x %% 3 == 0){
print("x is divisible by 3")
}else if (x %% 4 == 0){
print("x is divisible by 4")
}else{
print("x is neither divisible by 3 nor by 4")
}
[1] "x is divisible by 3"
Dans cet exemple, la première condition if étant TRUE, R quitte la structure de contrôle sans évaluer les suivantes, même si la condition else if aurait aussi donné TRUE. Si vous aviez utilisé un second if indépendant, il aurait été évalué lui aussi.
Conclusion
Félicitations, vous avez terminé ce tutoriel.
C’est un bon point de départ pour découvrir le langage R. Entraînez-vous en utilisant les opérateurs relationnels et logiques comme conditions dans des instructions conditionnelles.
D’autres sujets restent à couvrir en R, comme les utilitaires et l’apprentissage automatique, qui feront l’objet de prochains tutoriels. Restez à l’écoute !
N’hésitez pas à poser vos questions en commentaire ci-dessous.
Pour aller plus loin en R, suivez le cours Intermediate R de DataCamp.