Исчерпывающий обзор типов вещей в R; 'mode', 'class' и 'typeof' недостаточны

Язык R меня смущает. Сущности имеют режимы и классы , но даже этого недостаточно для полного описания объекта.

Этот ответ говорит

В R каждый «объект» имеет режим и класс.

Итак, я провел следующие эксперименты:

> class(3)
[1] "numeric"
> mode(3)
[1] "numeric"
> typeof(3)
[1] "double"

Пока достаточно хорошо, но вместо этого я передал вектор:

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

Это не имеет смысла. Конечно, вектор целых чисел должен иметь другой класс или другой режим, чем одно целое число? Мои вопросы:

  • Все ли в R имеют (ровно один) класс ?
  • Все ли в R имеют (ровно один) режим ?
  • Что, если что-нибудь, говорит нам 'typeof'?
  • Какая еще информация необходима для полного описания сущности? (Где, например, хранится «векторность»?)

Обновление : По-видимому, литерал 3 - это просто вектор длины 1. Скаляров нет. Хорошо, но ... Я попробовал режим ("строка") и получил "символ" , что привело меня к мысли, что строка представляет собой вектор символов. Но если это было правдой, то это должно быть правдой, но это не так! c ('h', 'i') == "привет"

43
задан Jaap 16 November 2018 в 16:11
поделиться