R: Simple Sparse Arrays

simple_sparse_array {slam} | R Documentation

## Simple Sparse Arrays

### Description

Data structures and operators for sparse arrays based on a representation by index matrix and value vector.

### Usage

    simple_sparse_array(i, v, dim = NULL, dimnames = NULL)

    as.simple_sparse_array(x)
    is.simple_sparse_array(x)

    simplify_simple_sparse_array(x, higher = TRUE)
    reduce_simple_sparse_array(x, strict = FALSE, order = FALSE)
    drop_simple_sparse_array(x)

### Arguments

`i` | Integer matrix of array indices.
`v` | Vector of values.
`dim` | Integer vector specifying the size of the dimensions.
`dimnames` | either `NULL` or the names for the dimensions. This is a list with one component for each dimension, either `NULL` or a character vector of the length given by `dim` for that dimension. The list can be named, and the list names will be used as names for the dimensions. If the list is shorter than the number of dimensions, it is extended by `NULL`'s to the length required.
`x` | An R object; an object of class `simple_sparse_array` (see Note).
`higher` | Option to use the dimensions of the values (see Note).
`strict` | Option to treat violations of sparse representation as error (see Note).
`order` | Option to reorder elements (see Note).

### Details

`simple_sparse_array` is a generator for a class of “lightweight” sparse arrays, represented by index matrices and value vectors. Currently, only methods for indexing and coercion are implemented.

### Note

The zero element is defined as `vector(typeof(v), 1L)`, for example, `FALSE` for `logical` values (see `vector`). Clearly, sparse arrays should not contain zero elements, however, for performance reasons the class generator does not remove them.

If `strict = FALSE` (default) `reduce_simple_sparse_array` tries to repair violations of sparse representation (zero, multiple elements), otherwise it stops. If `order = TRUE` the elements are further reordered (see `array`).

`simplify_simple_sparse_array` tries to reduce `v`. If `higher = TRUE` (default) augments `x` by the common dimensions of `v` (from the left), or the common length. Note that scalar elements are never extended and unused dimensions never dropped.

`drop_simple_sparse_array` drops unused dimensions.

If `prod(dim(x)) > slam_options("max_dense")` empty and negative indexing are disabled for `[` and `[<-`. Further, non-negative single (vector) indexing is limited to 52 bits of representation.

### See Also

`simple_triplet_matrix` for sparse matrices.

`slam_options` for options.

### Examples

    x <- array(c(1, 0, 0, 2, 0, 0, 0, 3), dim = c(2, 2, 2))
    s <- as.simple_sparse_array(x)
    identical(x, as.array(s))

    simple_sparse_array(matrix(c(1, 3, 1, 3, 1, 3), nrow = 2), c(1, 2))

[Package slam version 0.1-40 Index]