Типы и classы переменных

Два вопроса R:

  1. В чем разница между типом (возвращаемым typeof ) и classом (возвращаемым class ) переменной? Разница подобна той, что, скажем, на языке C ++?
  2. Каковы возможные типы и classы переменных?

В R каждый «объект» имеет mode и class . Первый представляет, как объект хранится в памяти (числовой, символ, список и функция), а позднее представляет его абстрактный тип. Например:

 d <- data.frame(V1=c(1,2)) class(d) # [1] "data.frame" mode(d) # [1] "list" typeof(d) # list 

Как видите, кадры данных хранятся в памяти в виде list но они завернуты в объекты data.frame . Последнее позволяет использовать функции-члены, а также функции перегрузки, такие как print с пользовательским поведением.

typeof ( storage.mode ) обычно дает ту же информацию, что и mode но не всегда. Дело в точке:

 typeof(c(1,2)) # [1] "double" mode(c(1,2)) # [1] "numeric" 

Обоснование этого можно найти здесь :

Специфическая функция типа R возвращает тип объекта R

Функциональный режим предоставляет информацию о режиме объекта в смысле Becker, Chambers & Wilks (1988) и более совместим с другими реализациями языка S

Ссылка, которую я опубликовал выше, также содержит список всех basic types R (векторов, списков и т. Д.) И всех compound objects (факторов и data.frames), а также некоторые примеры того, как mode , typeof и class связаны для каждого тип.

type действительно относится к различным структурам данных, доступным в R. Это обсуждение в руководстве по определению языка R может помочь вам начать работу с объектами и типами.

С другой стороны, class означает что-то еще в R, чем то, что вы можете ожидать. Из руководства по определению языка R (которое поставляется с вашей версией R):

2.2.4 Классы

R имеет сложную систему classов 1 , в основном управляемую атрибутом classа. Этот атрибут является символьным вектором, содержащим список classов, которым наследуется объект. Это составляет основу функциональности «общих методов» в R.

Доступ к этому атрибуту можно осуществлять практически без ограничений. Нет проверки того, что объект фактически содержит компоненты, которые ожидают методы classа. Таким образом, изменение атрибута classа должно выполняться с осторожностью, и когда они доступны, предпочтение отдается конкретным функциям создания и принуждения.

  • Условный оператор не может действовать неявно?
  • В чем разница между типом и classом?
  • Какой тип данных MySQL следует использовать для широты / долготы с 8 десятичными знаками?
  • Где в памяти мои переменные, хранящиеся в C?
  • Как преобразовать первичный ключ из целого в последовательный?
  • Что такое тип данных uintptr_t
  • Какой примитивный тип данных - time_t?
  • Ограничение типа множественного типа (ИЛИ)
  • Почему / когда использовать `intptr_t` для литья типов в C?
  • Буферный тип данных C99?
  • Использование IsAssignableFrom с открытыми типами
  • Interesting Posts

    Прерывистая BSOD после установки SSD на Sony Vaio

    Как настроить брандмауэр Windows 7 для работы как обычный персональный брандмауэр?

    Изменение сочетания клавиш для переключения приложений в OS X

    HTTPS с NSURLConnection – NSURLErrorServerCertificateUntrusted

    Как получить член, к которому был применен мой пользовательский атрибут?

    Слияние видео и аудио с пользовательским панорамированием

    Почему включение не имеет никакого эффекта?

    Диалог открытия файла gtk +

    Safari / Chrome (Webkit) – Не удается скрыть вертикальную полосу прокрутки iframe

    Восстановить данные с диска, который был отформатирован на низком уровне

    Открытие веб-браузера не в новом браузере

    Есть ли ограничение, которое ограничивает мой общий метод численными типами?

    Наполнить вид / макет в другой макет?

    Можно ли использовать переднюю и заднюю камеры одновременно в Android

    Необработанный SQL-запрос Entity framework

    Давайте будем гением компьютера.