# rle: Run Length Encoding

 rle 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)))
```