Введение в R версия 3.5.2 (2018-12-20). Заметки по R: среда программирования для анализа данных и графики - страница 14

Шрифт
Интервал


. Единственное очевидное исключение к этому правилу – специальное «значение», обозначаемое как NA для отсутствующих значений, хотя реально есть несколько типов NA. Заметим, что вектор может быть пустым и иметь режим. Например, пустой вектор символьной строки обозначается как character (0) и пустой числовой вектор как numeric (0).

R также работает с объектами, называемыми списками (list), которые имеют тип список (list). Существуют упорядоченные последовательности объектов, которые индивидуально могут иметь любой тип. Списки (list) известны как «рекурсивные», а не атомарные структуры, так как их компоненты могут самостоятельно быть списками.

Другие рекурсивные структуры из этого типа – это функции и выражения (function и expression). Функции – это объекты, которые являются частью системы R наряду с аналогичными написанными пользователем функциями, которые в деталях обсуждаются позже. Выражения, как объекты, составляют самую сложную часть R, которая не будет обсуждаться в этом руководстве, кроме как косвенно при обсуждении формул (formulae), используемых при моделировании R.

Типом (mode) объекта обозначили основной тип его фундаментальных свойств. Это – особый случай «свойств» объекта. Другое свойство каждого объекта – своя длина. Можно использовать функции mode (object) и length (object), чтобы узнать тип и длину любой определенной структуры.

Заметим, однако, что length (object) не всегда содержит явную полезную информацию, например, когда object – функция.

Другие свойства объекта обычно получают посредством attributes (object), смотри Раздел 3.3 [Получение и установка атрибутов]. Из-за этого тип и длину также называют «внутренними атрибутами» объекта.

Например, если z – комплексный вектор длины 100, то в выражении mode (z) является символьной строкой «complex», и length (z) равна 100.

R обслуживает изменения типа практически везде, где это имеет смысл сделать, и иногда там, где этого не так. Например, с:

> z <-0:9

можно ввести

> digits <– as.character (z)

после которого digits является символьным вектором c («0», «1», «2»…, «9»). Дальнейшее приведение, или изменение типа, восстанавливает числовой вектор снова:

> d <– as.integer (digits)

Теперь d и z одинаковы. Существует большое количество функций вида as.something () или для приведения от одного типа к другому, или для наделения объекта некоторым другим атрибутом, которым он, возможно, еще не обладает.