Menu
CoddyTech

Именованные векторы

Часть раздела Основы путешествия по 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

Именованные векторы особенно полезны при работе с данными, имеющими естественные метки, например при хранении оценок студентов по предметам или цен по названиям товаров.

challenge icon

Задание

Легко

Вы получите две строки входных данных:

  1. Разделённый запятыми список названий продуктов (например, laptop,phone,tablet,headphones)
  2. Разделённый запятыми список соответствующих цен (например, 999,699,449,199)

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

  1. Создайте числовой вектор из цен
  2. Назначьте названия продуктов вектору с помощью функции names()
  3. Выведите весь именованный вектор
  4. Выведите цену второго продукта, обратившись к нему по его названию
  5. Выведите цену последнего продукта, обратившись к нему по его названию

Например, если входные данные имеют вид:

apple,banana,orange,grape
2,1,3,4

Вывод должен быть таким:

apple banana orange  grape 
    2      1      3      4 
banana 
     1 
grape 
    4

Примечание: обращайтесь ко второму и последнему элементам, используя имя в качестве индекса (строку, например prices["banana"]), а не числовую позицию. Названия берутся из первой строки входных данных, поэтому сначала найдите там нужное название.

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

# Прочитать ввод
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. Выведите цену последнего продукта, обратившись к нему по имени
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор R