Язык 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. Нет скаляров. OK Но... Я пробовал mode("string")
и получил "character"
, что заставило меня думать, что строка является вектором символов. Но если это правда, тогда это должно быть правдой, но это не так! c('h','i') == "hi"