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
.