SparseArraySeed-class {DelayedArray} | R Documentation

## SparseArraySeed objects

### Description

SparseArraySeed objects are used internally to support block processing of array-like objects.

### Usage

    ## Constructor function:
    SparseArraySeed(dim, nzindex=NULL, nzdata=NULL, check=TRUE)

    ## Getters (in addition to dim() and length()):
    nzindex(x)
    nzdata(x)
    sparsity(x)

    ## Two low-level utilities:
    dense2sparse(x)
    sparse2dense(sas)

### Arguments

`dim` | The dimensions (specified as an integer vector) of the SparseArraySeed object to create.
`nzindex` | A matrix containing the array indices of the nonzero data. This must be an integer matrix like one returned by `base::arrayInd`, that is, with `length(dim)` columns and where each row is an n-uplet representing an array index.
`nzdata` | A vector of length `nrow(nzindex)` containing the nonzero data.
`check` | Should the object be validated upon construction?
`x` | A SparseArraySeed object for the `nzindex`, `nzdata`, and `sparsity` getters. An array-like object for `dense2sparse`.
`sas` | A SparseArraySeed object.

### Value

- For `SparseArraySeed()`: A SparseArraySeed instance.

- For `nzindex()`: The matrix containing the array indices of the nonzero data.

- For `nzdata()`: The vector of nonzero data.

- For `sparsity()`: The number of zero-valued elements in the implicit array divided by the total number of array elements (a.k.a. the length of the array).

- For `dense2sparse()`: A SparseArraySeed instance.

- For `sparse2dense()`: An ordinary array.

### See Also

- The `read_sparse_block` function.

- `blockApply` for more information about block processing of array-like objects.

- `extract_array`.

- DelayedArray objects.

- `arrayInd` in the base package.

- array objects in base R.

### Examples

    ## ---------------------------------------------------------------------
    ## EXAMPLE 1
    ## ---------------------------------------------------------------------
    nzindex1 <- rbind(c(2,4,3), c(2,1,3), c(5,4,3), c(5,3,3),
                      c(5,4,1), c(5,1,1), c(5,4,2), c(5,4,1))
    nzdata1 <- 11.11 * seq_len(nrow(nzindex1))
    sas1 <- SparseArraySeed(5:3, nzindex1, nzdata1)

    dim(sas1)        # the dimensions of the implicit array
    length(sas1)     # the length of the implicit array
    nzindex(sas1)
    nzdata(sas1)
    sparsity(sas1)

    sparse2dense(sas1)
    as.array(sas1)   # same as sparse2dense(sas1)

    ## Not run:
    as.matrix(sas1)  # error!

    ## End(Not run)
    ## ---------------------------------------------------------------------
    ## EXAMPLE 2
    ## ---------------------------------------------------------------------
    m2 <- matrix(c(5:-2, rep.int(c(0L, 99L), 11)), ncol=6)
    sas2 <- dense2sparse(m2)
    dim(sas2)
    length(sas2)
    nzindex(sas2)
    nzdata(sas2)
    sparsity(sas2)

    stopifnot(identical(sparse2dense(sas2), m2))

    as.matrix(sas2)  # same as sparse2dense(sas2)

    t(sas2)
    stopifnot(identical(as.matrix(t(sas2)), t(as.matrix(sas2))))

    ## Go back and forth between SparseArraySeed and dgCMatrix objects:
    M2 <- as(sas2, "dgCMatrix")
    stopifnot(identical(M2, as(m2, "dgCMatrix")))

    sas2b <- as(M2, "SparseArraySeed")
    ## 'sas2b' is the same as 'sas2' except that
    ## 'nzdata(sas2b)' is of type numeric instead of integer:
    all.equal(sas2b, sas2)
    typeof(nzdata(sas2b))  # numeric
    typeof(nzdata(sas2))   # integer

    ## ---------------------------------------------------------------------
    ## SEED CONTRACT
    ## ---------------------------------------------------------------------
    ## SparseArraySeed objects comply with the "seed contract".
    ## In particular they support extract_array():
    extract_array(sas1, list(c(5, 3:2, 5), NULL, 3))

    ## See '?extract_array' for more information about the "seed contract".

    ## This means that they can be wrapped in a DelayedArray object:
    A1 <- DelayedArray(sas1)
    A1

    ## A big very sparse DelayedMatrix object:
    nzindex3 <- cbind(sample(25000, 600000, replace=TRUE),
                      sample(195000, 600000, replace=TRUE))
    nzdata3 <- runif(600000)
    sas3 <- SparseArraySeed(c(25000, 195000), nzindex3, nzdata3)
    sparsity(sas3)

    M3 <- DelayedArray(sas3)
    M3
    colSums(M3[ , 1:20])

[Package DelayedArray version 0.12.3 Index]