| Extract.rle {rle} | R Documentation |
Indexing Methods for rle Objects
Description
These methods provide indexing functionality for
rle objects on the scale of the original scale (the elements
of the vector that was compressed) where possible.
Usage
## S3 method for class 'rle'
x[i, ..., unclass = getOption("rle.unclass_index") %||% FALSE]
## S3 replacement method for class 'rle'
x[i, ..., unclass = getOption("rle.unclass_index") %||% FALSE] <- value
## S3 method for class 'rle'
x[[i, ..., unclass = getOption("rle.unclass_index") %||% FALSE]]
## S3 replacement method for class 'rle'
x[[i, ..., unclass = getOption("rle.unclass_index") %||% FALSE]] <- value
## S3 method for class 'rle'
x$name
## S3 replacement method for class 'rle'
x$name <- value
Arguments
x, i, name, value, ... |
Arguments to indexing operators. See Extract documentation in the base package. |
unclass |
Logical: whether to process the arguments as if for
an ordinary list; default other than |
Details
At this time, the rle following form of indexing are supported:
| operation | index | effect |
[ | numeric >= 0 | as vector |
[ | numeric < 0 | no |
[ | logical | no |
[ | character | on rle |
[<- | numeric >= 0 | no |
[<- | numeric < 0 | no |
[<- | logical | no |
[<- | character | on rle |
[[ | numeric | as vector |
[[<- | numeric | no |
[[ | character | on rle |
[[<- | character | on rle |
$ | character | on rle |
$<- | character | on rle
|
Generally, character indexes will access the underlying elements of
the rle object, $lengths and $values.
Value
For character indices, the corresponding sublists or
elements of the rle object; for numeric indices, for [[ the
element at the specified position and for [ an rle containing the
elements at the specified position(s).
Note
Some of these methods and inputs produce an error in
order to future-proof code that depends on the rle package by
preventing their use.
See Also
Examples
# Indexing by character or by $ works, including sub-indexing.
x <- rle(1:5)
x[["values"]] <- 2:6
x
x$values[2:3] <- 7:8
x
# From example(rle):
z <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE)
rle(z)
rle(z)[3:5] # Extract a sub-rle
rle(z)[[4]] # Extract an element
stopifnot(identical(inverse.rle(rle(z)[3:5]), z[3:5]))
# Fractional:
stopifnot(identical(inverse.rle(rle(z)[3.5]), z[3.5]))
# Zero:
stopifnot(identical(inverse.rle(rle(z)[0]), z[0]))
# Out of range:
stopifnot(identical(inverse.rle(rle(z)[20]), z[20]))
# A mix:
strange <- c(20, 3:5, 0, NA, 1:2)
stopifnot(identical(inverse.rle(rle(z)[strange]), z[strange]))