должны использоваться при доступности. В дополнение к скрытым деталям реализации они могут выполнить дополнительные операции. R пытается принять вызовы attr <- и attributes <-, которые включают специальные атрибуты, и осуществляет проверку непротиворечивости.
Матрицы и массивы – просто векторы с атрибутом размерности и дополнительно с именем размерности (dimnames), присоединенные к вектору.
Атрибуты используются для реализации структуры класса, используемой в R. Если у объекта есть атрибут класса, то атрибут будет исследован во время оценки. Структура класса в R описана подробно в главе 5 [Объектно-ориентированное программирование].
2.2.1. Имена
Атрибут имени (names) при его присутствии маркирует отдельные элементы вектора или списка. При печати объекта атрибут имени при его присутствии используется для маркировки элементов. Атрибут имен может также использоваться для индексирования результата, например, quantile (x) [«25%»].
Можно получить и определить имена, используя конструкции names и names <-. Последняя выполнит необходимые проверки непротиворечивости, чтобы гарантировать, что у атрибута имен есть надлежащий тип и длина.
Отдельно обрабатываются парные списки и одномерные массивы. Для объектов парных списков (pairlist) используется виртуальный атрибут имен; в действительности атрибут имен создается из тегов компонентов списка. Для одномерных массивов реально имена доступы из имен размерности (dimnames [[1]]).
2.2.2. Размерность
Атрибут размерности используется при реализации массивов. Контент массива сохраняется в векторе в порядке по столбцам, и атрибут размерности является вектором целых чисел, указывающие соответствующие пределы массива. R гарантирует, что длина вектора равна произведению длин размерностей. Длина одной или более размерностей может равняться нулю.
Вектор не является одномерным массивом, так как у последнего атрибут размерности длиною один, тогда как у вектора атрибут размерности отсутствует.
2.2.3. Имена размерности
Массивы могут назвать каждую размерность, отдельно используя атрибут имен размерности (dimnames), который является списком символьных векторов. У списка имен размерностей самостоятельно могут быть имена, которые затем используются для заголовков пределов при печати массива.
2.2.4. Классы
У R есть тщательно продуманная система классов, которая преимущественно управляется через атрибут класса. Этот атрибут – символьный вектор, содержащий список классов, от которых наследовался объект. Он формирует основание «универсальных методов» функциональности R.
К этому атрибуту пользователи могут получить доступ и управление фактически без ограничения. Отсутствует проверка, что объект фактически содержит компоненты, которые ожидают методы класса. Таким образом, изменение атрибута класса должно быть сделано с осторожностью, и при доступе к ним следует предпочесть определенные функции создания и преобразования.
2.2.5.