Menu
Coddy logo textTech

Векторизованная логика. Часть 1

Часть раздела Основы путешествия по R на Coddy — урок 20 из 78.

В языке R есть две версии операторов И (AND) и ИЛИ (OR). Вы уже узнали о && и ||, которые работают с одиночными значениями. Теперь давайте изучим их векторизованные аналоги: & и | (одиночные символы).

Ключевое отличие заключается в том, что & и | сравнивают значения поэлементно при работе с несколькими значениями:

a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)

a & b   # TRUE FALSE FALSE FALSE
a | b   # TRUE TRUE TRUE FALSE

Каждая позиция сравнивается независимо. В первой позиции и a, и b имеют значение TRUE, поэтому a & b возвращает TRUE. Во второй позиции a имеет значение TRUE, а b — FALSE, поэтому a & b возвращает FALSE.

Это становится мощным инструментом в сочетании с операторами сравнения:

scores <- c(85, 42, 91, 67, 55)

# Проверка, какие оценки находятся в диапазоне от 50 до 80
scores >= 50 & scores <= 80  # FALSE FALSE FALSE TRUE TRUE

Результатом является вектор логических значений, показывающий, какие элементы соответствуют обоим условиям. Такое поэлементное поведение необходимо для фильтрации и анализа данных в R.

challenge icon

Задание

Легко

Используйте векторизованные операторы И (&) и ИЛИ (|) для выполнения поэлементного сравнения векторов.

Вам предоставлены следующие векторы:

temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)

Используйте векторизованные логические операторы для создания следующих логических векторов:

  1. Создайте вектор с именем comfortable_temp, который хранит TRUE для каждой температуры, которая больше или равна 20 И меньше или равна 30
  2. Создайте вектор с именем high_humidity, который хранит TRUE для каждого значения влажности, которое больше 70
  3. Создайте вектор с именем pleasant_day, который хранит TRUE для каждого дня, когда температура находится в диапазоне от 20 до 30 (включительно) И влажность меньше или равна 60
  4. Создайте вектор с именем extreme_weather, который хранит TRUE для каждого дня, когда температура больше 30 ИЛИ влажность больше 80
  5. Создайте вектор с именем stay_inside, который хранит TRUE для каждого дня, когда температура меньше 18 ИЛИ (температура больше 30 И влажность больше 70)

Используйте функцию print() для отображения comfortable_temp, high_humidity, pleasant_day, extreme_weather и stay_inside именно в таком порядке.

Шпаргалка

В R есть две версии операторов И (AND) и ИЛИ (OR):

  • && и || работают с одиночными значениями
  • & и | — это векторизованные операторы, которые сравнивают значения поэлементно

Векторизованные операторы & и | сравнивают каждую позицию независимо:

a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)

a & b   # TRUE FALSE FALSE FALSE
a | b   # TRUE TRUE TRUE FALSE

Векторизованные операторы эффективны при использовании вместе с операторами сравнения:

scores <- c(85, 42, 91, 67, 55)

# Проверить, какие оценки находятся в диапазоне от 50 до 80
scores >= 50 & scores <= 80  # FALSE FALSE FALSE TRUE TRUE

Результатом является вектор логических значений, показывающий, какие элементы соответствуют условиям.

Попробуйте сами

# Предоставленные векторы
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)

# TODO: Напишите ваш код ниже
# 1. Создайте comfortable_temp: TRUE, когда temp >= 20 И temp <= 30

# 2. Создайте high_humidity: TRUE, когда humidity > 70

# 3. Создайте pleasant_day: TRUE, когда temp от 20 до 30 И humidity <= 60

# 4. Создайте extreme_weather: TRUE, когда temp > 30 ИЛИ humidity > 80

# 5. Создайте stay_inside: TRUE, когда temp < 18 ИЛИ (temp > 30 И humidity > 70)


# Выведите результаты
print(comfortable_temp)
print(high_humidity)
print(pleasant_day)
print(extreme_weather)
print(stay_inside)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы