Menu
Coddy logo textTech

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

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

Примечание: Обращайтесь ко второму и последнему элементам по их именам (как к строкам), а не по числовому индексу.

Шпаргалка

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

Создайте именованный вектор, указав имена во время создания:

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

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

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