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’éléments de votre inventaire, séparés par des virgules (par ex., apple,banana,milk,bread,eggs,cheese)
  2. Une liste d’éléments sur votre liste de courses, séparés par des virgules (par ex., milk,butter,eggs,juice)
  3. Une liste d’éléments en promotion, séparés par des virgules (par ex., bread,juice,yogurt)

À l’aide de 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 éléments de la liste de courses se trouvent déjà dans votre inventaire et affichez le résultat sous forme de vecteur logique
  3. Filtrez et affichez les éléments de la liste de courses que vous n’avez PAS dans votre inventaire (les éléments que vous devez acheter)
  4. Filtrez et affichez les éléments 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 comparée à l’inventaire : milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Éléments absents de l’inventaire (à acheter) : butter, juice
  • Éléments à acheter qui sont en promotion : butter et juice figurent tous les deux dans la liste des promotions

Utilisez l’opérateur ! avec %in% pour trouver les éléments qui ne se trouvent PAS dans un vecteur.

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

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