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.5-3

Index]