Menu
Coddy logo textTech

O Operador %in%

Parte da seção Fundamentos do Journey de R da Coddy. Lição 70 de 78.

Às vezes, você precisa verificar se valores existem dentro de um vetor. O operador %in% fornece uma maneira limpa de testar a pertinência, retornando TRUE para cada elemento que corresponde e FALSE caso contrário.

A sintaxe básica verifica se os valores à esquerda existem no vetor à direita:

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

Saída:

[1] TRUE

Você também pode verificar vários valores de uma só vez. O operador retorna um vetor lógico com um resultado para cada valor sendo testado:

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

Saída:

[1]  TRUE FALSE  TRUE

Isso torna o %in% perfeito para filtragem. Combinado com indexação lógica, você pode extrair elementos que pertencem a um conjunto específico:

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

Saída:

[1] 1 3 2

O operador %in% é especialmente útil ao validar a entrada do usuário ou filtrar dados com base em uma lista predefinida de valores aceitáveis.

challenge icon

Desafio

Fácil

Você receberá três linhas de entrada:

  1. Uma lista de itens separados por vírgulas em seu inventário (por exemplo, apple,banana,milk,bread,eggs,cheese)
  2. Uma lista de itens separados por vírgulas em sua lista de compras (por exemplo, milk,butter,eggs,juice)
  3. Uma lista de itens separados por vírgulas que estão em promoção (por exemplo, bread,juice,yogurt)

Usando o operador %in%:

  1. Crie vetores de caracteres a partir de cada entrada separada por vírgulas
  2. Verifique quais itens da lista de compras você já tem em seu inventário e imprima o resultado do vetor lógico
  3. Filtre e imprima os itens da lista de compras que você NÃO tem em seu inventário (itens que precisa comprar)
  4. Filtre e imprima os itens que você precisa comprar e que também estão em promoção

Por exemplo, se as entradas forem:

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

A saída deverá ser:

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

Explicação:

  • Lista de compras verificada em relação ao inventário: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Itens que NÃO estão no inventário (precisam ser comprados): butter, juice
  • Itens para comprar que estão em promoção: butter e juice estão ambos na lista de promoções

Use o operador ! com %in% para encontrar itens que NÃO estão em um vetor.

Experimente você mesmo

# Ler a entrada
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: Escreva seu código abaixo
# 1. Crie vetores de caracteres a partir de cada entrada separada por vírgulas usando strsplit()
# 2. Verifique quais itens da lista de compras você já possui no inventário (use %in%)
# 3. Filtre os itens da lista de compras que você NÃO possui no inventário (use ! com %in%)
# 4. Filtre os itens que você precisa comprar que também estão em promoção
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de R online