вектор - символьный / целочисленный класс (под капотом) - PullRequest
0 голосов
/ 25 июня 2018

Начиная изучать R, и я был бы признателен за помощь в понимании того, как R определяет класс различных векторов.Я инициализирую vec <- c(1:6), и когда я выполняю class(vec), я получаю 'integer'.Почему это не «число», потому что я думал, что целые числа в R выглядят так: 4L

Также с vec2 <- c(1,'a',2,TRUE), почему class(vec2) «символ»?Я предполагаю, что R подхватывает символы и автоматически назначает все остальное символами ... так что на самом деле это выглядит как c('1','a','2','TRUE') Я прав?

1 Ответ

0 голосов
/ 25 июня 2018

Введите следующее, вы можете увидеть страницу справки оператора двоеточия.

?`:`

Вот один абзац.

Для числовых аргументов - числовой вектор. Это будет целочисленный тип если от является целочисленным, и результат представим в R целочисленный тип, иначе типа "double" (он же режим "numeric").

Итак, в вашем примере c(1:6), поскольку 1 для аргумента from может быть представлен в R как целое число, результирующая последовательность становится целым числом.

Кстати, c не требуется для создания вектора в этом случае.

По второму вопросу, поскольку в векторе все элементы должны быть одного типа, R автоматически преобразует все элементы в один и тот же. В этом случае можно преобразовать все в символы, но невозможно преобразовать «а» в числовые значения, поэтому получается символьный вектор.

...