Logique vectorisée - Partie 1
Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 20 sur 78.
R possède deux versions des opérateurs AND (ET) et OR (OU). Vous avez découvert && et ||, qui fonctionnent avec des valeurs uniques. Explorons maintenant leurs équivalents vectorisés : & et | (symboles simples).
La différence clé est que & et | comparent les valeurs élément par élément lorsque l'on travaille avec plusieurs valeurs :
a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)
a & b # TRUE FALSE FALSE FALSE
a | b # TRUE TRUE TRUE FALSEChaque position est comparée indépendamment. Dans la première position, a et b sont tous deux TRUE, donc a & b retourne TRUE. Dans la deuxième position, a est TRUE mais b est FALSE, donc a & b retourne FALSE.
Cela devient puissant lorsqu'on le combine avec des opérateurs de comparaison :
scores <- c(85, 42, 91, 67, 55)
# Vérifier quels scores sont compris entre 50 et 80
scores >= 50 & scores <= 80 # FALSE FALSE FALSE TRUE TRUELe résultat est un vecteur de valeurs logiques indiquant quels éléments remplissent les deux conditions. Ce comportement élément par élément est essentiel pour filtrer et analyser des données dans R.
Défi
FacileUtilisez les opérateurs vectorisés ET (&) et OU (|) pour effectuer des comparaisons élément par élément sur des vecteurs.
Les vecteurs suivants vous sont fournis :
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)Utilisez des opérateurs logiques vectorisés pour créer les vecteurs logiques suivants :
- Créez un vecteur appelé
comfortable_tempqui stockeTRUEpour chaque température supérieure ou égale à 20 ET inférieure ou égale à 30 - Créez un vecteur appelé
high_humidityqui stockeTRUEpour chaque valeur d'humidité supérieure à 70 - Créez un vecteur appelé
pleasant_dayqui stockeTRUEpour chaque jour où la température est comprise entre 20 et 30 (inclus) ET l'humidité est inférieure ou égale à 60 - Créez un vecteur appelé
extreme_weatherqui stockeTRUEpour chaque jour où la température est supérieure à 30 OU l'humidité est supérieure à 80 - Créez un vecteur appelé
stay_insidequi stockeTRUEpour chaque jour où la température est inférieure à 18 OU (la température est supérieure à 30 ET l'humidité est supérieure à 70)
Utilisez la fonction print() pour afficher comfortable_temp, high_humidity, pleasant_day, extreme_weather et stay_inside dans cet ordre exact.
Aide-mémoire
R possède deux versions des opérateurs ET (AND) et OU (OR) :
&&et||fonctionnent avec des valeurs uniques&et|sont des opérateurs vectorisés qui comparent les valeurs élément par élément
Les opérateurs vectorisés & et | comparent chaque position de manière indépendante :
a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)
a & b # TRUE FALSE FALSE FALSE
a | b # TRUE TRUE TRUE FALSELes opérateurs vectorisés sont puissants lorsqu'ils sont combinés avec des opérateurs de comparaison :
scores <- c(85, 42, 91, 67, 55)
# Vérifier quels scores sont compris entre 50 et 80
scores >= 50 & scores <= 80 # FALSE FALSE FALSE TRUE TRUELe résultat est un vecteur de valeurs logiques indiquant quels éléments remplissent les conditions.
Essayez vous-même
# Vecteurs fournis
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)
# À FAIRE : Écrivez votre code ci-dessous
# 1. Créer comfortable_temp : TRUE quand temp >= 20 ET temp <= 30
# 2. Créer high_humidity : TRUE quand humidity > 70
# 3. Créer pleasant_day : TRUE quand temp est entre 20-30 ET humidity <= 60
# 4. Créer extreme_weather : TRUE quand temp > 30 OU humidity > 80
# 5. Créer stay_inside : TRUE quand temp < 18 OU (temp > 30 ET humidity > 70)
# Afficher les résultats
print(comfortable_temp)
print(high_humidity)
print(pleasant_day)
print(extreme_weather)
print(stay_inside)Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défaut