Menu
Coddy logo textTech

El Operador %in%

Parte de la sección Fundamentos del Journey de R de Coddy. Lección 70 de 78.

A veces necesitas comprobar si existen valores dentro de un vector. El operador %in% proporciona una forma limpia de comprobar la pertenencia, devolviendo TRUE para cada elemento que coincida y FALSE en caso contrario.

La sintaxis básica comprueba si los valores de la izquierda existen en el vector de la derecha:

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

Salida:

[1] TRUE

También puedes comprobar varios valores a la vez. El operador devuelve un vector lógico con un resultado por cada valor que se está probando:

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

Resultado:

[1]  TRUE FALSE  TRUE

Esto hace que %in% sea perfecto para filtrar. Combinado con la indexación lógica, puedes extraer elementos que pertenecen a un conjunto específico:

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

Resultado:

[1] 1 3 2

El operador %in% es especialmente útil al validar la entrada del usuario o filtrar datos basándose en una lista predefinida de valores aceptables.

challenge icon

Desafío

Fácil

Recibirás tres líneas de entrada:

  1. Una lista de elementos de tu inventario separados por comas (por ejemplo, apple,banana,milk,bread,eggs,cheese)
  2. Una lista de elementos de tu lista de compras separados por comas (por ejemplo, milk,butter,eggs,juice)
  3. Una lista de elementos que están en oferta separados por comas (por ejemplo, bread,juice,yogurt)

Usando el operador %in%:

  1. Crea vectores de caracteres a partir de cada entrada separada por comas
  2. Comprueba qué elementos de la lista de compras ya tienes en tu inventario e imprime el resultado del vector lógico
  3. Filtra e imprime los elementos de la lista de compras que NO tienes en tu inventario (los elementos que necesitas comprar)
  4. Filtra e imprime los elementos que necesitas comprar y que también están en oferta

Por ejemplo, si las entradas son:

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

La salida debería ser:

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

Explicación:

  • Lista de compras comprobada frente al inventario: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Elementos que NO están en el inventario (necesitas comprarlos): butter, juice
  • Elementos que necesitas comprar y que están en oferta: butter y juice aparecen ambos en la lista de ofertas

Usa el operador ! con %in% para encontrar elementos que NO están en un vector.

Pruébalo tú mismo

# Leer 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: Escribe tu código a continuación
# 1. Crear vectores de caracteres a partir de cada entrada separada por comas usando strsplit()
# 2. Verificar qué artículos de la lista de compras ya tienes en el inventario (usar %in%)
# 3. Filtrar los artículos de la lista de compras que NO tienes en el inventario (usar ! con %in%)
# 4. Filtrar los artículos que necesitas comprar que también están en oferta
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de R online