numeric режим – на самом деле смесь двух разных режимов, а именно, integer и double precision, как объяснено в руководстве.
У векторов должен быть одинаковый режим для всех значений. Таким образом, любой данный вектор должен быть однозначно или логическим, числовым, комплексным, символьным или строковым (logical, numeric, complex, character или raw). Единственное очевидное исключение к этому правилу – специальное «значение», обозначаемое как 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 обслуживает изменения типа практически везде, где это имеет смысл сделать, и иногда там, где этого не так. Например, с:
можно ввести
после которого digits является символьным вектором c («0», «1», «2»…, «9»). Дальнейшее приведение, или изменение типа, восстанавливает числовой вектор снова:
Теперь d и z одинаковы. Существует большое количество функций вида as.something () или для приведения от одного типа к другому, или для наделения объекта некоторым другим атрибутом, которым он, возможно, еще не обладает.
В целом приведение от числового к символьному типу и назад не будет точно обратимо из-за ошибок округления в символьном представлении.
Читатель должен консультироваться с различными справочными файлами для ознакомления.
3.2. Изменяющаяся длина объекта
«Пустой» объект может все еще иметь тип. Например:
делает e пустой векторной структурой типа числовой (numeriс). Так же character () является пустым символьным вектором, и так далее. Как только объект любого размера был создан, новые компоненты могут быть просто добавлены к нему, давая ему значение индексов вне его предыдущего диапазона. Таким образом:
теперь делает e вектором длины 3, (первые две компоненты, которого равны NA). Это применяется к любой структуре вообще, если тип дополнительного компонента (ов) согласован с типом первого объекта.