Именованные векторы
Часть раздела Основы путешествия по R на Coddy — урок 62 из 78.
До сих пор вы обращались к элементам вектора, используя числовые позиции. Но что, если бы вы могли обращаться к ним по осмысленным именам? Именованные векторы позволяют присваивать метки каждому элементу, делая ваш код более читаемым и самодокументированным.
Вы можете создать именованный вектор, указав имена во время создания:
ages <- c(alice = 25, bob = 30, charlie = 28)
print(ages)Вывод:
alice bob charlie
25 30 28Чтобы получить доступ к элементам по имени, используйте имя в виде строки внутри квадратных скобок:
print(ages["bob"])Вывод:
bob
30Вы также можете добавить имена к существующему вектору с помощью функции names():
scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
print(scores["math"])Вывод:
math
85Именованные векторы особенно полезны при работе с данными, имеющими естественные метки, например, при хранении оценок студентов по предметам или цен по названиям товаров.
Задание
ЛегкоВы получите две строки входных данных:
- Список названий продуктов, разделенных запятыми (например,
laptop,phone,tablet,headphones) - Список соответствующих цен, разделенных запятыми (например,
999,699,449,199)
Выполните следующие операции:
- Создайте числовой вектор из цен
- Присвойте названия продуктов вектору, используя функцию
names() - Выведите весь именованный вектор
- Выведите цену второго продукта, обратившись к нему по его имени
- Выведите цену последнего продукта, обратившись к нему по его имени
Например, если входные данные следующие:
apple,banana,orange,grape
2,1,3,4Выходные данные должны быть такими:
apple banana orange grape
2 1 3 4
banana
1
grape
4Примечание: Обращайтесь ко второму и последнему элементам по их именам (как к строкам), а не по числовому индексу.
Шпаргалка
Именованные векторы позволяют присваивать метки каждому элементу, делая их доступными по осмысленным именам, а не только по числовым позициям.
Создайте именованный вектор, указав имена во время создания:
ages <- c(alice = 25, bob = 30, charlie = 28)Обращайтесь к элементам по имени, используя имя в виде строки внутри квадратных скобок:
ages["bob"] # Возвращает элемент с именем "bob"Добавьте имена к существующему вектору с помощью функции names():
scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
scores["math"] # Возвращает 85Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
products_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Разбор входных данных, разделенных запятыми
product_names <- strsplit(products_input, ",")[[1]]
price_values <- strsplit(prices_input, ",")[[1]]
# TODO: Напишите свой код ниже
# 1. Создайте числовой вектор из цен
# 2. Присвойте названия продуктов вектору с помощью names()
# 3. Выведите весь именованный вектор
# 4. Выведите цену второго продукта, обратившись к нему по имени
# 5. Выведите цену последнего продукта, обратившись к нему по имениВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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)Функции для работы со строками