\Header{rep}{Replicate Elements of Vectors and Lists}
\methalias{rep.default}{rep}
\methalias{rep.int}{rep}
\methalias{rep.POSIXct}{rep}
\methalias{rep.POSIXlt}{rep}
\keyword{manip}{rep}
\keyword{chron}{rep}
\begin{Description}\relax
\code{rep} replicates the values in \code{x}. It is a generic
function, and the default method is described here.

\code{rep.int} is a faster simplified version for the commonest case.\end{Description}
\begin{Usage}
\begin{verbatim}
rep(x, times, ...)

## Default S3 method:
rep(x, times, length.out, each, ...)

rep.int(x, times)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a vector (of any mode including a list) or a pairlist or a
\code{POSIXct} or \code{POSIXlt} object.
\item[\code{times}] non-negative integer.  A vector giving the number of
times to repeat each element if of length \code{length(x)}, or to
repeat the whole vector if of length 1.
\item[\code{length.out}] integer.  (Optional.)  The desired length of the
output vector.
\item[\code{each}] optional integer. Each element of \code{x} is
repeated \code{each} times.
\item[\code{...}] further arguments to be passed to or from other methods.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If \code{times} consists of a single integer,
the result consists of the values in
\code{x} repeated this many times.
If \code{times} is a vector of the same length as
\code{x}, the result consists of \code{x[1]}
repeated \code{times[1]} times,
\code{x[2]} repeated \code{times[2]} times and so on.

\code{length.out} may be given in place of \code{times},
in which case \code{x} is repeated as many times as is
necessary to create a vector of this length.  If both
\code{length.out} and \code{times} are specified, \code{times}
determines the replication, and \code{length.out} can be used to
truncate the output vector (or extend it by \code{NA}s).

Non-integer values of \code{times} will be truncated towards zero.
If \code{times} is a computed quantity it is prudent to add a small fuzz.\end{Details}
\begin{Value}
A vector of the same class as \code{x}.\end{Value}
\begin{Note}\relax
If the original vector has names, these are also replicated and so
will almost always contain duplicates.

If \code{length.out} is used to extend the vector, the behaviour is
different from that of S-PLUS, which recycles the existing vector.

Function \code{rep.int} is a simple case handled by internal code, and
provided as a separate function purely for S compatibility.\end{Note}
\begin{References}\relax
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth \& Brooks/Cole.\end{References}
\begin{SeeAlso}\relax
\code{\Link{seq}}, \code{\Link{sequence}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
rep(1:4, 2)
rep(1:4, each = 2)       # not the same.
rep(1:4, c(2,2,2,2))     # same as second.
rep(1:4, c(2,1,2,1))
rep(1:4, each = 2, len = 4)  # first 4 only.
rep(1:4, each = 2, len = 10)   # 8 integers plus two NAs

rep(1, 40*(1-.8)) # length 7 on most platforms
rep(1, 40*(1-.8)+1e-7) # better

## replicate a list
fred <- list(happy = 1:10, name = "squash")
rep(fred, 5)

# date-time objects
x <- .leap.seconds[1:3]
rep(x, 2)
rep(as.POSIXlt(x), rep(2, 3))
\end{ExampleCode}
\end{Examples}

