Почему seq () создает как int, так и num векторы, а c () никогда не создает int? - PullRequest
0 голосов
/ 10 октября 2018

Я не могу понять, почему seq() может выводить разные классы в зависимости от того, присутствуют ли десятичные точки в элементах, тогда как c() всегда создает вектор числа независимо от наличия или отсутствия десятичных знаков.

Например:

seqDec <- seq(1, 2, 0.5) # num vector
cDec <- c(1, 1.5, 2) # num vector
seqInt <- seq(1, 5) # int vector
cInt <- c(1, 2, 3, 4, 5) # num vector

1 Ответ

0 голосов
/ 10 октября 2018

c создает вектор, объединяя элементы, которые вы ему даете.В отличие от этого seq фактически строит последовательность, генерируя новые числа на основе определенных параметров.

Так что в случае c(1, 2, 4, 5), поскольку аргументы равны numeric, то и результат (class(1) равенnumeric, а не integer!).Вы можете сгенерировать вектор integer, предоставив целых чисел :

intvec = c(1L, 2L, 3L, 4L, 5L)

Громоздкий.Но возможно.

При seq, если вы не укажете размер шага (параметр by), функция по умолчанию генерирует целочисленные значения;в этом отношении он эквивалентен оператору ::

intvec = 1 : 5

Фактически, если вы не предоставите аргумент by или length.out, то seq(from, to) внутренне выполнит from : to.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...