Операции с векторами
Часть раздела Основы путешествия по R на Coddy — урок 59 из 78.
Одной из самых мощных возможностей R является способность выполнять операции над целыми векторами одновременно, без необходимости перебора каждого элемента в цикле. Это делает ваш код более чистым и эффективным.
Когда вы применяете арифметический оператор к вектору, R выполняет операцию над каждым элементом:
prices <- c(10, 25, 15, 30)
discounted <- prices * 0.9
print(discounted)Вывод:
[1] 9.0 22.5 13.5 27.0Вы также можете выполнять операции между двумя векторами одинаковой длины. R сопоставляет соответствующие элементы:
quantities <- c(2, 1, 4, 3)
prices <- c(10, 25, 15, 30)
totals <- quantities * prices
print(totals)Вывод:
[1] 20 25 60 90R предоставляет полезные встроенные функции для распространенных вычислений с векторами, такие как sum(), mean(), min() и max():
scores <- c(85, 92, 78, 95, 88)
print(sum(scores))
print(mean(scores))
print(min(scores))
print(max(scores))Вывод:
[1] 438
[1] 87.6
[1] 78
[1] 95Задание
ЛегкоВам предоставлены следующие векторы:
hours_worked <- c(8, 7, 9, 6, 8)
hourly_rate <- c(15, 20, 18, 22, 17)Выполните следующие операции и выведите каждый результат:
- Рассчитайте ежедневный заработок для каждого дня, умножив
hours_workedнаhourly_rate(поэлементно). Выведите этот вектор. - Примените 10% бонус ко всем ежедневным заработкам (умножьте на
1.1). Выведите обновленный вектор заработка. - Выведите общую сумму заработка за неделю, используя
sum() - Выведите средний ежедневный заработок, используя
mean() - Выведите самый высокий заработок за один день, используя
max() - Выведите самый низкий заработок за один день, используя
min()
Ваш вывод должен быть следующим:
[1] 120 140 162 132 136
[1] 132.0 154.0 178.2 145.2 149.6
[1] 759
[1] 151.8
[1] 178.2
[1] 132Шпаргалка
R выполняет операции над целыми векторами одновременно, без необходимости использования циклов.
Применение арифметического оператора к вектору выполняет операцию над каждым элементом:
prices <- c(10, 25, 15, 30)
discounted <- prices * 0.9
print(discounted)
# [1] 9.0 22.5 13.5 27.0Операции между двумя векторами одинаковой длины объединяют соответствующие элементы в пары:
quantities <- c(2, 1, 4, 3)
prices <- c(10, 25, 15, 30)
totals <- quantities * prices
print(totals)
# [1] 20 25 60 90Общие встроенные функции для вычислений с векторами:
scores <- c(85, 92, 78, 95, 88)
sum(scores) # [1] 438
mean(scores) # [1] 87.6
min(scores) # [1] 78
max(scores) # [1] 95Попробуйте сами
# Заданные векторы
hours_worked <- c(8, 7, 9, 6, 8)
hourly_rate <- c(15, 20, 18, 22, 17)
# TODO: Напишите ваш код ниже
# 1. Рассчитайте ежедневный заработок (поэлементное умножение)
# 2. Примените 10% бонус к ежедневному заработку
# 3. Выведите общую сумму заработка за неделю, используя sum()
# 4. Выведите средний ежедневный заработок, используя mean()
# 5. Выведите максимальный заработок за один день, используя max()
# 6. Выведите минимальный заработок за один день, используя min()В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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)Функции для работы со строками