R: Run Length Encoding (original) (raw)

rle {base} R Documentation

Description

Compute the lengths and values of runs of equal values in a vector – or the reverse operation.

Usage

rle(x)
inverse.rle(x, ...)

## S3 method for class 'rle'
print(x, digits = getOption("digits"), prefix = "", ...)

Arguments

x a vector (atomic, not a list) for rle(); an object of class "rle" for inverse.rle().
... further arguments; ignored here.
digits number of significant digits for printing, seeprint.default.
prefix character string, prepended to each printed line.

Details

‘vector’ is used in the sense of [is.vector](../../base/help/is.vector.html).

Missing values are regarded as unequal to the previous value, even if that is also missing.

inverse.rle() is the inverse function of rle(), reconstructing x from the runs.

Value

rle() returns an object of class "rle" which is a list with components:

lengths an integer vector containing the length of each run.
values a vector of the same length as lengths with the corresponding values.

inverse.rle() returns an atomic vector.

Examples

x <- rev(rep(6:10, 1:5))
rle(x)
## lengths [1:5]  5 4 3 2 1
## values  [1:5] 10 9 8 7 6

z <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE)
rle(z)
rle(as.character(z))
print(rle(z), prefix = "..| ")

N <- integer(0)
stopifnot(x == inverse.rle(rle(x)),
          identical(N, inverse.rle(rle(N))),
          z == inverse.rle(rle(z)))

[Package _base_ version 4.6.0 Index]