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).
class
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.
[: 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.
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.