Операции с векторами
Часть раздела Основы путешествия по R на Coddy. Урок 59 из 78.
Одна из самых мощных возможностей R — выполнять операции сразу над целыми vectors, без необходимости перебирать каждый element в цикле. Это делает ваш код более понятным и эффективным.
Когда вы применяете арифметический оператор к вектору, R выполняет операцию над каждым element:
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Задание
ЛегкоВам предоставлены следующие vectors:
hours_worked <- c(8, 7, 9, 6, 8)
hourly_rate <- c(15, 20, 18, 22, 17)Выполните следующие операции и выведите каждый result:
- Calculate daily earnings для каждого day, умножив
hours_workedнаhourly_rate(поэлементно). Выведите этот vector. - Apply бонус в размере 10% ко всем daily earnings (умножьте на
1.1). Выведите обновлённый vector earnings. - Выведите total earnings за week, используя
sum() - Выведите average daily earnings, используя
mean() - Выведите highest single-day earnings, используя
max() - Выведите lowest single-day earnings, используя
min()
Ваш output должен быть следующим:
[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Попробуйте сами
# Даны векторы
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)Функции для работы со строкамиПотренируйтесь самостоятельно: Онлайн-компилятор R