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] TRUEVocê 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 TRUEIsso 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 2O operador %in% é especialmente útil ao validar a entrada do usuário ou filtrar dados com base em uma lista predefinida de valores aceitáveis.
Desafio
FácilVocê receberá três linhas de entrada:
- Uma lista de itens separados por vírgulas em seu inventário (por exemplo,
apple,banana,milk,bread,eggs,cheese) - Uma lista de itens separados por vírgulas em sua lista de compras (por exemplo,
milk,butter,eggs,juice) - Uma lista de itens separados por vírgulas que estão em promoção (por exemplo,
bread,juice,yogurt)
Usando o operador %in%:
- Crie vetores de caracteres a partir de cada entrada separada por vírgulas
- Verifique quais itens da lista de compras você já tem em seu inventário e imprima o resultado do vetor lógico
- Filtre e imprima os itens da lista de compras que você NÃO tem em seu inventário (itens que precisa comprar)
- 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,butterA 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çãoEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz13Vetores Avançados
Fatiamento e Indexação de VetoresIndexação LógicaAritmética e Reciclagem de VetoresO Operador %in%2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros PadrãoPratique por conta própria: Compilador de R online