Menu
Coddy logo textTech

Lógica vectorizada Parte 2

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

Al igual que AND y OR tienen versiones vectorizadas, el operador NOT también funciona elemento por elemento en vectores. Cuando aplicas ! a un vector de valores lógicos, invierte cada elemento individualmente.

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Cada TRUE se convierte en FALSE, y cada FALSE se convierte en TRUE. Esto es especialmente útil cuando quieres encontrar elementos que no cumplen una determinada condición:

temperatures <- c(18, 25, 30, 15, 22)

# Encuentra las temperaturas que NO están por encima de 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Puedes combinar el NOT vectorizado con & y | para crear filtros complejos:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Puede participar si: age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Recuerda: usa &, | y ! individuales cuando trabajes con vectores, y &&, || dobles cuando compares valores individuales.

challenge icon

Desafío

Fácil

Usa el operador NOT vectorizado (!) junto con & y | para crear condiciones lógicas complejas elemento por elemento.

Se te proporcionan los siguientes vectores:

scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

Usa operadores lógicos vectorizados, incluido el operador NOT, para crear los siguientes vectores lógicos:

  1. Crea un vector llamado failed que almacene TRUE para cada puntuación que sea NOT mayor o igual que 60
  2. Crea un vector llamado absent que almacene lo opuesto de attended (invierte cada valor)
  3. Crea un vector llamado at_risk que almacene TRUE para cada estudiante que NOT haya asistido OR que NOT haya entregado la tarea
  4. Crea un vector llamado passing_but_absent que almacene TRUE para cada estudiante que tenga una puntuación mayor o igual que 60 AND que NOT haya asistido
  5. Crea un vector llamado needs_support que almacene TRUE para cada estudiante cuando: (la puntuación sea menor que 50) OR (que NOT haya asistido AND que NOT haya entregado la tarea)

Usa la función print() para mostrar failed, absent, at_risk, passing_but_absent y needs_support exactamente en ese orden.

Pruébalo tú mismo

# Vectores dados
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

# TODO: Escribe tu código debajo
# 1. Crea 'failed' - TRUE para scores NOT >= 60

# 2. Crea 'absent' - opuesto de attended

# 3. Crea 'at_risk' - NOT attended OR NOT submitted homework

# 4. Crea 'passing_but_absent' - score >= 60 AND NOT attended

# 5. Crea 'needs_support' - (score < 50) OR (NOT attended AND NOT submitted homework)

# Imprime los resultados
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
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