Векторизованная логика. Часть 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.
Задание
ЛегкоИспользуйте векторизованные операторы И (&) и ИЛИ (|) для выполнения поэлементного сравнения векторов.
Вам предоставлены следующие векторы:
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)Используйте векторизованные логические операторы для создания следующих логических векторов:
- Создайте вектор с именем
comfortable_temp, который хранитTRUEдля каждой температуры, которая больше или равна 20 И меньше или равна 30 - Создайте вектор с именем
high_humidity, который хранитTRUEдля каждого значения влажности, которое больше 70 - Создайте вектор с именем
pleasant_day, который хранитTRUEдля каждого дня, когда температура находится в диапазоне от 20 до 30 (включительно) И влажность меньше или равна 60 - Создайте вектор с именем
extreme_weather, который хранитTRUEдля каждого дня, когда температура больше 30 ИЛИ влажность больше 80 - Создайте вектор с именем
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)В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строками