R: Run Length Encoding

rle {base} | R Documentation

## Run Length Encoding

### 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, see `print.default`.
`prefix` | character string, prepended to each printed line.

### Details

‘vector’ is used in the sense of `is.vector`.

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 3.1.2 Index]