Треки
/
R
R
/
Салабус
/
Атрибут імен
Ат

Атрибут імен у R

1 вправа

Про концепцію Атрибут імен

Елементи векторів можуть мати назви, що іноді робить роботу з ними зручнішою.

Створення

Є три способи додати назви до вектора.

  1. Під час створення вектора
> work_days <- c(Mon = TRUE, Tue = TRUE, Wed = TRUE, Thu = TRUE, Fri = TRUE, Sat = FALSE, Sun = FALSE)
> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
  1. Присвоївши вектор символів до names()
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> names(months) <- month.abb
> months
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
 31  28  31  30  31  30  31  31  30  31  30  31 
  1. За допомогою setNames()
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> setNames(months, month.name)
  January  February     March     April       May      June      July    August September   October  November  December 
       31        28        31        30        31        30        31        31        30        31        30        31 

Видалення

Якщо назви більше не потрібні, їх можна прибрати, присвоївши NULL

> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
> names(work_days) <- NULL
> work_days
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

Функція unname() робить те саме, а можливо, й чіткіше передає намір.

Робота з назвами

Функція names() може як повертати назви, так і встановлювати їх.

> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"

Назву можна використати замість індексу позиції, але в цьому випадку потрібні лапки.

> months[c("Jul", "Aug")]
Jul Aug 
 31  31 

Щоб таке індексування працювало правильно, найкраще подбати про те, щоб назви були унікальними й без пропусків. Проте R не вимагає унікальності.

Звичайні операції над векторами все ще працюють, і назви зазвичай зберігаються, якщо це має сенс.

> months[months == 30]
Apr Jun Sep Nov 
 30  30  30  30 

> sum(months)
[1] 365  # no meaningful names possible

Складніші теми

Багато обʼєктів R, зокрема vectors, можуть мати довільні приєднані атрибути. Атрибут names - це лише один приклад, щоправда особливо поширений і важливий.

На практиці назви іноді бувають корисними для векторів, але рідко бувають конче потрібними. Атрибут names-attribute стає значно важливішим для складніших структур, як-от lists і dataframes, як ми побачимо в наступних концепціях.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Атрибут імен