Menu
Coddy logo textTech

Indexation logique

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

Au lieu de spécifier des positions exactes, vous pouvez utiliser un vecteur logique pour sélectionner des éléments. Cette technique, appelée indexation logique, vous permet de filtrer un vecteur en fonction de conditions plutôt que de positions.

Lorsque vous appliquez une comparaison à un vecteur, R renvoie un vecteur logique de la même longueur :

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)

Sortie :

[1] FALSE FALSE  TRUE  TRUE  TRUE

Vous pouvez utiliser ce vecteur logique directement à l'intérieur de crochets pour extraire les éléments correspondants :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])

Sortie :

[1] 30 40 50

R ne conserve que les éléments pour lesquels le vecteur logique est TRUE. Cette approche est bien plus propre que l'écriture de boucles pour filtrer les données. Vous pouvez combiner des conditions en utilisant des opérateurs logiques :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])

Résultat :

[1] 20 30 40

L'indexation logique est l'une des fonctionnalités les plus puissantes de R pour la manipulation de données, vous permettant de filtrer des ensembles de données avec des expressions simples et lisibles.

challenge icon

Défi

Facile

Vous recevrez deux lignes d'entrée :

  1. Une liste de nombres séparés par des virgules (par exemple, 15,42,8,67,23,91,34,12,56)
  2. Deux valeurs de seuil séparées par une virgule représentant une plage (par exemple, 20,60)

En utilisant l'indexation logique :

  1. Créez un vecteur numérique à partir des nombres séparés par des virgules
  2. Extrayez et affichez tous les éléments qui sont inférieurs au premier seuil (borne inférieure)
  3. Extrayez et affichez tous les éléments qui sont supérieurs au second seuil (borne supérieure)
  4. Extrayez et affichez tous les éléments qui sont dans la plage (supérieurs ou égaux au premier seuil ET inférieurs ou égaux au second seuil)

Par exemple, si les entrées sont :

5,25,10,45,60,15,80,35,50
20,50

La sortie devrait être :

[1]  5 10 15
[1] 60 80
[1] 25 45 35 50

Explication :

  • Éléments inférieurs à 20 : 5, 10, 15
  • Éléments supérieurs à 50 : 60, 80
  • Éléments entre 20 et 50 (inclus) : 25, 45, 35, 50

Utilisez l'opérateur & pour combiner les conditions pour le filtre de plage.

Aide-mémoire

L'indexation logique vous permet de filtrer un vecteur en fonction de conditions plutôt que de positions. Lorsque vous appliquez une comparaison à un vecteur, R renvoie un vecteur logique :

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)
# Output: [1] FALSE FALSE  TRUE  TRUE  TRUE

Utilisez le vecteur logique à l'intérieur de crochets pour extraire les éléments correspondants :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])
# Output: [1] 30 40 50

Combinez des conditions en utilisant des opérateurs logiques comme & (ET) :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])
# Output: [1] 20 30 40

Essayez vous-même

# Lire l'entrée
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Analyser les nombres séparés par des virgules dans un vecteur numérique
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))

# Analyser les valeurs de seuil
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]

# TODO: Écrivez votre code ci-dessous
# 1. Utiliser l'indexation logique pour extraire les éléments inférieurs à lower_bound et les afficher
# 2. Utiliser l'indexation logique pour extraire les éléments supérieurs à upper_bound et les afficher
# 3. Utiliser l'indexation logique avec l'opérateur & pour extraire les éléments dans la plage (inclusif) et les afficher
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