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 tu appliques ! à 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. C’est particulièrement utile lorsque vous voulez trouver les éléments qui ne satisfont pas une certaine condition :

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

# Trouver les températures qui ne sont PAS au-dessus de 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

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

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

# Peut participer si : age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Rappelle-toi : utilise un seul &, | et ! lorsque tu travailles avec des vecteurs, et un double &&, || lorsque tu compares des valeurs uniques.

challenge icon

Défi

Facile

Utilisez l’opérateur vectorisé NON (!) ainsi que & et | pour créer des conditions logiques complexes appliquées é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, notamment l’opérateur NON, 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é au cours OU n’a PAS rendu ses devoirs
  4. Créez un vecteur appelé passing_but_absent qui stocke TRUE pour chaque étudiant dont le score est supérieur ou égal à 60 ET qui n’a PAS assisté au cours
  5. Créez un vecteur appelé needs_support qui stocke TRUE pour chaque étudiant dans le cas suivant : (le score est inférieur à 50) OU (l’étudiant n’a PAS assisté au cours 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.

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éez 'failed' - TRUE pour les scores NOT >= 60

# 2. Créez 'absent' - opposé de attended

# 3. Créez 'at_risk' - NOT attended OR NOT submitted homework

# 4. Créez 'passing_but_absent' - score >= 60 AND NOT attended

# 5. Créez 'needs_support' - (score < 50) OR (NOT attended AND NOT submitted homework)

# Affichez 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

Entraînez-vous par vous-même : Compilateur R en ligne