«char» a «scalar»
строковый объект (только внутренний) ***
«logical»
вектор, содержащий логические значения
«integer»
вектор, содержащий целые значения
«double»
вектор, содержащий реальные значения
«complex»
вектор, содержащий комплексные значения
«character»
вектор, содержащий символьные значения
«…»
аргумент определенной переменной длины ***
«any»
специальный тип, который заменяет все типы: не существует объектов такого типа
«expression»
объект выражение
«list»
список
«bytecode»
код в байтах (только внутренне) ***
«externalptr»
объект внешнего указателя
«weakref»
объект слабой ссылки
«raw»
вектор, содержащий байты
«S4»
объект S4, который не является простым объектом
Пользователи не могут просто получить объекты, помеченные «***».
Функциональный режим дает информацию о режиме объекта в смысле Becker, Chambers & Wilks (1988), и является более совместимым с другими реализациями языка S. Наконец, функция storage.mode показывает режим хранения ее аргумента в смысле Беккера и др. (1988). Она обычно используется при вызове функции, записанной на другом языке, таких как C или ФОРТРАН для гарантирования, что объекты R имеют тип данных, который ожидает вызываемая подпрограмма. (На языке S векторы с целочисленными или действительными значениями имеют оба «числовой» режим, таким образом, их режимы хранения нужно отличать.)
> x <– 1:3
> typeof (x)
[1] «integer»
> mode (x)
[1] «numeric»
> storage.mode (x) [1] «integer»
Объекты в R часто преобразовываются к различным типам во время вычислений. Также имеется много доступных функций для выполнения явного преобразования. При программировании на языке R тип объекта обычно не влияет на вычисления, однако, имея дело с внешними языками или операционной системой, часто необходимо гарантировать корректность типа объекта.
2.1. Основные типы
2.1.1. Векторы
Вектора рассматриваются как непрерывная последовательность ячеек, содержащих данные. Доступ к ячейкам осуществляется через операции индексирования, такими, как x [5]. Более детально рассмотрено в разделе 3.4 [индексирование].
R имеет шесть основных («атомарных») типов векторов: logical, integer, real, complex, string (or character) и raw. Режим и режим хранения для разных типов векторов перечислены в следующей таблице.
Отдельные числа, такие как 4.2, и строка, такая как «four point two», все еще векторы, длины 1; нет больше основных типов. Возможны (и полезны) векторы с нулевой длиной.
У векторов строки есть режим и режим хранения «character». Отдельный элемент символьного вектора часто упоминается как символьная строка.
2.1.2. Списки
Списки («универсальные векторы») являются другим видом хранения данных. У списков есть элементы, каждый из которых может содержать любой тип объекта R, то есть элементы списка не обязательно имеют одинаковый тип. К элементам списка получают доступ посредством трех различных операций индексации. Они объяснены подробно в Разделе 3.4 [Индексирование].
Списки – векторы, и основные типы векторов упоминаются как атомарные векторы, где необходимо исключить списки.
2.1.3. Языковые объекты
Есть три типа объектов, которые составляют язык R, а именно: call (вызов), expressions (выражения) и name (имя). Так как у R есть объекты типа «выражение», то попытаемся избежать использования слова «выражение» в других контекстах. В определенных синтаксически корректных высказываниях выражения будут упоминаться как операторы.
У этих объектов есть режимы «call», «expression» и «name», соответственно.
Они могут быть созданы непосредственно из выражений, используя механизм кавычек и преобразованы «в» и «из» списков функциями as.call и as.list. Могут быть извлечены компоненты дерева синтаксического анализа, используя стандартные операции индексации.