abIndex-class {Matrix} | R Documentation |
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 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.
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
:signature(x = "abIndex")
: ...
signature(x = "abIndex", i = "index", j = "ANY", drop = "ANY")
: ...
signature(from = "numeric", to = "abIndex")
: ...
signature(from = "abIndex", to = "numeric")
: ...
signature(from = "abIndex", to = "integer")
: ...
signature(x = "abIndex")
: ...
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.
signature(e1 = "abIndex", e2 = "abIndex")
: ...
signature(e1 = "abIndex", e2 = "numeric")
: ...
signature(x = "abIndex")
: ...
("abIndex")
: simple show
method,
building on show(<rleDiff>)
.
("abIndex")
: works analogously to regular vectors.
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.
rle
(base) which is used here;
numeric
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")))