Rev 79189 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/seq.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2013 R Core Team% Distributed under GPL 2 or later\name{seq}\title{Sequence Generation}\alias{seq}\alias{seq.default}\alias{seq.int}\alias{seq_along}\alias{seq_len}\description{Generate regular sequences. \code{seq} is a standard generic with adefault method. \code{seq.int} is a primitive which can bemuch faster but has a few restrictions. \code{seq_along} and\code{seq_len} are very fast primitives for two common cases.}\usage{seq(\dots)\method{seq}{default}(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, \dots)seq.int(from, to, by, length.out, along.with, \dots)seq_along(along.with)seq_len(length.out)}\arguments{\item{\dots}{arguments passed to or from methods.}\item{from, to}{the starting and (maximal) end values of thesequence. Of length \code{1} unless just \code{from} is supplied asan unnamed argument.}\item{by}{number: increment of the sequence.}\item{length.out}{desired length of the sequence. Anon-negative number, which for \code{seq} and \code{seq.int} will berounded up if fractional.}\item{along.with}{take the length from the length of this argument.}}\details{Numerical inputs should all be \link{finite} (that is, not infinite,\code{\link{NaN}} or \code{NA}).The interpretation of the unnamed arguments of \code{seq} and\code{seq.int} is \emph{not} standard, and it is recommended always toname the arguments when programming.\code{seq} is generic, and only the default method is described here.Note that it dispatches on the class of the \strong{first} argumentirrespective of argument names. This can have unintended consequencesif it is called with just one argument intending this to be taken as\code{along.with}: it is much better to use \code{seq_along} in thatcase.\code{seq.int} is an \link{internal generic} which dispatches onmethods for \code{"seq"} based on the class of the first suppliedargument (before argument matching).Typical usages are\preformatted{seq(from, to)seq(from, to, by= )seq(from, to, length.out= )seq(along.with= )seq(from)seq(length.out= )}The first form generates the sequence \code{from, from+/-1, \dots, to}(identical to \code{from:to}).The second form generates \code{from, from+by}, \ldots, up to thesequence value less than or equal to \code{to}. Specifying \code{to -from} and \code{by} of opposite signs is an error. Note that thecomputed final value can go just beyond \code{to} to allow forrounding error, but is truncated to \code{to}. (\sQuote{Just beyond}is by up to \eqn{10^{-10}}{1e-10} times \code{abs(from - to)}.)The third generates a sequence of \code{length.out} equally spacedvalues from \code{from} to \code{to}. (\code{length.out} is usuallyabbreviated to \code{length} or \code{len}, and \code{seq_len} is muchfaster.)The fourth form generates the integer sequence \code{1, 2, \dots,length(along.with)}. (\code{along.with} is usually abbreviated to\code{along}, and \code{seq_along} is much faster.)The fifth form generates the sequence \code{1, 2, \dots, length(from)}(as if argument \code{along.with} had been specified), \emph{unless}the argument is numeric of length 1 when it is interpreted as\code{1:from} (even for \code{seq(0)} for compatibility with S).Using either \code{seq_along} or \code{seq_len} is much preferred(unless strict S compatibility is essential).The final form generates the integer sequence \code{1, 2, \dots,length.out} unless \code{length.out = 0}, when it generates\code{integer(0)}.Very small sequences (with \code{from - to} of the order of \eqn{10^{-14}}times the larger of the ends) will return \code{from}.For \code{seq} (only), up to two of \code{from}, \code{to} and\code{by} can be supplied as complex values provided \code{length.out}or \code{along.with} is specified. More generally, the default methodof \code{seq} will handle classed objects with methods forthe \code{Math}, \code{Ops} and \code{Summary} group generics.\code{seq.int}, \code{seq_along} and \code{seq_len} are\link{primitive}.}% We used to explain some of the circumstances when integer was% returned, but people read that carelessly, so no longer.\value{\code{seq.int} and the default method of \code{seq} for numericarguments return a vector of type \code{"integer"} or \code{"double"}:programmers should not rely on which.\code{seq_along} and \code{seq_len} return an integer vector, unlessit is a \emph{\link{long vector}} when it will be double.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\seealso{The methods \code{\link{seq.Date}} and \code{\link{seq.POSIXt}}.\code{\link{:}},\code{\link{rep}},\code{\link{sequence}},\code{\link{row}},\code{\link{col}}.}\examples{seq(0, 1, length.out = 11)seq(stats::rnorm(20)) # effectively 'along'seq(1, 9, by = 2) # matches 'end'seq(1, 9, by = pi) # stays below 'end'seq(1, 6, by = 3)seq(1.575, 5.125, by = 0.05)seq(17) # same as 1:17, or even better seq_len(17)}\keyword{manip}