Menu
Coddy logo textTech

Logique vectorisée - Partie 2

Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 21 sur 78.

Tout comme AND et OR ont des versions vectorisées, l'opérateur NOT fonctionne également élément par élément sur les vecteurs. Lorsque vous appliquez ! à un vecteur de valeurs logiques, il inverse chaque élément individuellement.

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Chaque TRUE devient FALSE, et chaque FALSE devient TRUE. Ceci est particulièrement utile lorsque vous voulez trouver des éléments qui ne remplissent pas une certaine condition :

temperatures <- c(18, 25, 30, 15, 22)

# Trouver les températures qui ne sont PAS supérieures à 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Vous pouvez combiner le NOT vectorisé avec & et | pour construire des filtres complexes :

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Peut participer si : âge >= 18 OU (moins de 18 ans ET a l'autorisation)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Rappelez-vous : utilisez les opérateurs simples &, | et ! lorsque vous travaillez avec des vecteurs, et les doubles &&, || lors de la comparaison de valeurs uniques.

challenge icon

Défi

Facile

Utilisez l'opérateur vectorisé NOT (!) ainsi que & et | pour créer des conditions logiques complexes élément par élément.

Les vecteurs suivants vous sont fournis :

scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

Utilisez des opérateurs logiques vectorisés, y compris l'opérateur NOT, pour créer les vecteurs logiques suivants :

  1. Créez un vecteur appelé failed qui stocke TRUE pour chaque score qui n'est PAS supérieur ou égal à 60
  2. Créez un vecteur appelé absent qui stocke l'opposé de attended (inversez chaque valeur)
  3. Créez un vecteur appelé at_risk qui stocke TRUE pour chaque étudiant qui n'a PAS assisté OU n'a PAS rendu ses devoirs
  4. Créez un vecteur appelé passing_but_absent qui stocke TRUE pour chaque étudiant qui a un score supérieur ou égal à 60 ET n'a PAS assisté
  5. Créez un vecteur appelé needs_support qui stocke TRUE pour chaque étudiant où : (le score est inférieur à 50) OU (n'a PAS assisté ET n'a PAS rendu ses devoirs)

Utilisez la fonction print() pour afficher failed, absent, at_risk, passing_but_absent et needs_support dans cet ordre exact.

Aide-mémoire

L'opérateur NOT (!) fonctionne par élément sur les vecteurs, inversant chaque valeur logique individuellement :

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Utilisez ! pour trouver les éléments qui ne remplissent pas une condition :

temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Combinez le NOT vectorisé avec & et | pour des filtres complexes :

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Can participate if: age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Rappel : utilisez les opérateurs simples &, | et ! pour les vecteurs ; utilisez les opérateurs doubles &&, || pour les valeurs uniques.

Essayez vous-même

# Vecteurs donnés
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

# TODO: Écrivez votre code ci-dessous
# 1. Créer 'failed' - TRUE pour les scores qui ne sont PAS >= 60

# 2. Créer 'absent' - l'opposé de attended

# 3. Créer 'at_risk' - PAS attended OU PAS submitted homework

# 4. Créer 'passing_but_absent' - score >= 60 ET PAS attended

# 5. Créer 'needs_support' - (score < 50) OU (PAS attended ET PAS submitted homework)

# Afficher les résultats
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconTestez-vous

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