В этой главе даны предварительные описания различных структур данных, предоставленных в R. Более детальные обсуждения многих из них будут найдены в последующих главах. Функция определения typeof в R возвращает тип объекта R. Заметим, что в коде C, лежащем в основе R, все объекты являются указателями на структуру с определением типа SEXPREC; различные типы данных R представлены в C SEXPTYPE, который определяет, как используется информация в различных частях структуры.
Следующая таблица описывает возможное значение, возвращенное typeof , и их значение.
парный объект (в основном внутренний)
объект, используемый для отложенной оценки
внутренняя функция, которая не вычисляет свои аргументы
внутренняя функция, которая вычисляет свои аргументы
строковый объект (только внутренний) ***
вектор, содержащий логические значения
вектор, содержащий целые значения
вектор, содержащий реальные значения
вектор, содержащий комплексные значения
вектор, содержащий символьные значения
аргумент определенной переменной длины ***
специальный тип, который заменяет все типы: не существует объектов такого типа
код в байтах (только внутренне) ***
объект внешнего указателя
объект слабой ссылки
«raw»
объект 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.1. Векторы
Вектора рассматриваются как непрерывная последовательность ячеек, содержащих данные. Доступ к ячейкам осуществляется через операции индексирования, такими, как x [5]. Более детально рассмотрено в разделе 3.4 [индексирование].
R имеет шесть основных («атомарных») типов векторов: logical, integer, real, complex, string (or character) и raw . Режим и режим хранения для разных типов векторов перечислены в следующей таблице.
Отдельные числа, такие как 4.2, и строка, такая как « four point two », все еще векторы, длины 1; нет больше основных типов. Возможны (и полезны) векторы с нулевой длиной.
Читать дальше