Inverse seq() – Short Expression for Index Vector
Compute a short expression for a given integer vector, typically
an index, that can be expressed shortly, using :
etc.
inv.seq(i)
i |
vector of (usually increasing) integers. |
a call
(“the inside of an
expression
”) to be eval()
ed to
return the original i
.
Martin Maechler, October 1995; more elegant implementation from Tony Plate.
rle
for another kind of integer vector coding.
(rr <- inv.seq(i1 <- c(3:12, 20:24, 27, 30:33))) eval(rr) stopifnot(eval(rr) == i1) e2 <- expression(c(20:13, 3:12, -1:-4, 27, 30:31)) (i2 <- eval(e2)) (r2 <- inv.seq(i2)) stopifnot(all.equal(r2, e2[[1]])) ## Had {mapply()} bug in this example: ii <- c(1:3, 6:9, 11:16) stopifnot(identical(ii, eval(inv.seq(ii))))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.