R: Class "abIndex" of Abstract Index Vectors

abIndex-class {Matrix} | R Documentation

## Class "abIndex" of Abstract Index Vectors

### Description

The `"abIndex"` `class`, short for “Abstract Index Vector”, is used for dealing with large index vectors more efficiently, than using integer (or `numeric`) vectors of the kind `2:1000000` or `c(0:1e5, 1000:1e6)`.

Note that the current implementation details are subject to change, and if you consider working with these classes, please contact the package maintainers (`packageDescription("Matrix")$Maintainer`).

### Objects from the Class

Objects can be created by calls of the form `new("abIndex", ...)`, but more easily and typically either by `as(x, "abIndex")` where `x` is an integer (valued) vector, or directly by `abIseq()` and combination `c(...)` of such.

### Slots

`kind`:

  a `character` string, one of `("int32", "double", "rleDiff")`, denoting the internal structure of the abIndex object.

`x`:

  Object of class `"numLike"`; is used (i.e., not of length `0`) only iff the object is not compressed, i.e., currently exactly when `kind != "rleDiff"`.

`rleD`:

  object of class `"rleDiff"`, used for compression via `rle`.

### Methods

as.numeric, as.integer, as.vector

  `signature(x = "abIndex")`: ...

[

  `signature(x = "abIndex", i = "index", j = "ANY", drop = "ANY")`: ...

coerce

  `signature(from = "numeric", to = "abIndex")`: ...

coerce

  `signature(from = "abIndex", to = "numeric")`: ...

coerce

  `signature(from = "abIndex", to = "integer")`: ...

length

  `signature(x = "abIndex")`: ...

Ops

  `signature(e1 = "numeric", e2 = "abIndex")`: These and the following arithmetic and logic operations are not yet implemented; see `Ops` for a list of these (S4) group methods.

Ops

  `signature(e1 = "abIndex", e2 = "abIndex")`: ...

Ops

  `signature(e1 = "abIndex", e2 = "numeric")`: ...

Summary

  `signature(x = "abIndex")`: ...

show

  `("abIndex")`: simple `show` method, building on `show(<rleDiff>)`.

is.na

  `("abIndex")`: works analogously to regular vectors.

is.finite, is.infinite

  `("abIndex")`: ditto.

### Note

This is currently experimental and not yet used for our own code. Please contact us (`packageDescription("Matrix")$Maintainer`), if you plan to make use of this class.

Partly builds on ideas and code from Jens Oehlschlaegel, as implemented (around 2008, in the GPL'ed part of) package ff.

### See Also

`rle` (base) which is used here; `numeric`

### Examples

    showClass("abIndex")
    ii <- c(-3:40, 20:70)
    str(ai <- as(ii, "abIndex"))# note
    ai # -> show() method

    stopifnot(identical(-3:20,
                        as(abIseq1(-3,20), "vector")))

[Package Matrix version 1.1-4 Index]