Menu
Coddy logo textTech

L'opérateur %in%

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

Parfois, vous devez vérifier si des valeurs existent dans un vecteur. L'opérateur %in% offre un moyen simple de tester l'appartenance, renvoyant TRUE pour chaque élément correspondant et FALSE sinon.

La syntaxe de base vérifie si les valeurs à gauche existent dans le vecteur à droite :

fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)

Résultat :

[1] TRUE

Vous pouvez également vérifier plusieurs valeurs à la fois. L'opérateur renvoie un vecteur logique avec un résultat pour chaque valeur testée :

fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)

Sortie :

[1]  TRUE FALSE  TRUE

Cela rend %in% parfait pour le filtrage. Combiné avec l'indexation logique, vous pouvez extraire des éléments qui appartiennent à un ensemble spécifique :

numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])

Sortie :

[1] 1 3 2

L'opérateur %in% est particulièrement utile lors de la validation des entrées utilisateur ou du filtrage de données basées sur une liste prédéfinie de valeurs acceptables.

challenge icon

Défi

Facile

Vous recevrez trois lignes d'entrée :

  1. Une liste d'articles séparés par des virgules dans votre inventaire (par exemple, apple,banana,milk,bread,eggs,cheese)
  2. Une liste d'articles séparés par des virgules sur votre liste de courses (par exemple, milk,butter,eggs,juice)
  3. Une liste d'articles séparés par des virgules qui sont en promotion (par exemple, bread,juice,yogurt)

En utilisant l'opérateur %in% :

  1. Créez des vecteurs de caractères à partir de chaque entrée séparée par des virgules
  2. Vérifiez quels articles de la liste de courses vous avez déjà dans votre inventaire et affichez le résultat du vecteur logique
  3. Filtrez et affichez les articles de la liste de courses que vous n'avez PAS dans votre inventaire (articles que vous devez acheter)
  4. Filtrez et affichez les articles que vous devez acheter et qui sont également en promotion

Par exemple, si les entrées sont :

apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butter

La sortie devrait être :

[1]  TRUE FALSE  TRUE FALSE  TRUE
[1] "butter" "juice" 
[1] "butter" "juice"

Explication :

  • Liste de courses vérifiée par rapport à l'inventaire : milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Articles PAS dans l'inventaire (à acheter) : butter, juice
  • Articles à acheter qui sont en promotion : butter et juice sont tous deux sur la liste des promotions

Utilisez l'opérateur ! avec %in% pour trouver les articles qui ne sont PAS dans un vecteur.

Aide-mémoire

L'opérateur %in% vérifie si des valeurs existent dans un vecteur, en renvoyant TRUE ou FALSE :

fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)

Sortie :

[1] TRUE

Vérifiez plusieurs valeurs à la fois pour obtenir un vecteur logique :

fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)

Sortie :

[1]  TRUE FALSE  TRUE

Utilisez %in% avec l'indexation logique pour filtrer les éléments :

numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])

Sortie :

[1] 1 3 2

Utilisez ! avec %in% pour trouver les éléments qui ne sont PAS dans un vecteur :

items <- c("milk", "butter", "eggs")
inventory <- c("milk", "eggs")
print(items[!items %in% inventory])

Sortie :

[1] "butter"

Essayez vous-même

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

# TODO: Écrivez votre code ci-dessous
# 1. Créer des vecteurs de caractères à partir de chaque entrée séparée par des virgules en utilisant strsplit()
# 2. Vérifier quels articles de la liste de courses vous avez déjà en inventaire (utiliser %in%)
# 3. Filtrer les articles de la liste de courses que vous n'avez PAS en inventaire (utiliser ! avec %in%)
# 4. Filtrer les articles que vous devez acheter qui sont également en solde
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