Parcours
/
R
R
/
Programme
/
Booléens
Bo

Booléens en R

1 exercice

À propos de Booléens

Les booléens en R

Les valeurs vrai ou faux sont représentées par le type logical. Il ne contient que deux valeurs : TRUE et FALSE.

TRUE
#> [1] TRUE
FALSE
#> [1] FALSE
typeof(TRUE)
#> [1] "logical"

Les opérateurs booléens

Il existe cinq opérateurs booléens en R.

!TRUE # FALSE (not)
TRUE && FALSE # FALSE (scalar and)
TRUE || FALSE # TRUE (scalar or)

TRUE & FALSE # FALSE (vector and)
TRUE | FALSE # TRUE (vector or)

&& et & correspondent au « et » booléen. Ils renvoient TRUE si les expressions situées de part et d'autre de && valent TRUE.

|| et | correspondent au « ou » booléen. Ils renvoient TRUE si une expression d'un côté ou de l'autre de || vaut TRUE.

Remarque qu'il existe deux ensembles d'opérateurs « et » et « ou ».

  • Les versions à deux caractères s'appliquent à une seule valeur.
  • Les variantes à un seul caractère s'appliquent élément par élément à des vecteurs et renvoient un vecteur de booléens.

Cette distinction deviendra importante, et sans doute plus claire, dans le concept vector-filtering.

Utiliser & et | sur des valeurs uniques fonctionne dans l'exemple ci-dessus, car elles sont traitées comme des vecteurs de longueur 1. Le comportement diffère subtilement de celui des opérateurs à deux caractères, car seuls ces derniers fonctionnent en court-circuit : la valeur de droite n'est pas évaluée si celle de gauche suffit à déterminer le résultat. Ainsi, TRUE || anything vaut toujours TRUE, quelle que soit l'expression logique que représente anything, et anything est donc ignoré.

Utiliser && ou || sur des vecteurs (de longueur 2 ou plus) fait que seul le premier élément entre dans la comparaison, ce qui produit un unique TRUE/FALSE et probablement un message d'avertissement. Ce n'est probablement pas ce que tu voulais faire.

! est l'opérateur booléen « non ». Il échange les valeurs TRUE et FALSE.

!TRUE
#> [1] FALSE
!FALSE
#> [1] TRUE

Pour des expressions plus longues et plus compliquées, il vaut mieux utiliser des parenthèses afin de rendre ton intention claire.

(TRUE || FALSE) && (FALSE && TRUE)
#> [1] FALSE

TRUE || FALSE && (FALSE && TRUE)
#> [1] TRUE

Il n'existe pas d'opérateur infixe pour le ou exclusif (c'est-à-dire A ou B, mais pas les deux). Dans ce cas, tu peux utiliser la fonction xor().

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Booléens