1\name{inv.seq}
2\alias{inv.seq}
3\title{Inverse seq() -- Short Expression for Index Vector}
4\description{
5  Compute a short expression for a given integer vector, typically
6  an index, that can be expressed shortly, using \code{\link{:}} etc.
7}
8\usage{
9inv.seq(i)
10}
11\arguments{
12  \item{i}{vector of (usually increasing) integers.}
13}
14%%\details{
15%%}
16\value{
17  a \code{\link{call}} (\dQuote{the inside of an
18    \code{\link{expression}}}) to be \code{\link{eval}()}ed to
19  return the original \code{i}.
20}
21\author{Martin Maechler, October 1995; more elegant implementation from Tony Plate.}
22\seealso{\code{\link{rle}} for another kind of integer vector coding.}
23\examples{
24(rr <- inv.seq(i1 <- c(3:12, 20:24, 27, 30:33)))
25eval(rr)
26stopifnot(eval(rr) == i1)
27
28e2 <- expression(c(20:13, 3:12, -1:-4, 27, 30:31))
29(i2 <- eval(e2))
30(r2 <- inv.seq(i2))
31stopifnot(all.equal(r2, e2[[1]]))
32
33## Had {mapply()} bug in this example:
34ii <- c(1:3, 6:9, 11:16)
35stopifnot(identical(ii, eval(inv.seq(ii))))
36}
37\keyword{arith}
38\keyword{utilities}
39