Description Usage Arguments Value See Also Examples
SparseArraySeed objects are used internally to support block processing of array-like objects.
1 2 3 4 5 6 7 8 9 10 11 | ## Constructor function:
SparseArraySeed(dim, nzindex=NULL, nzdata=NULL, dimnames=NULL, check=TRUE)
## Getters (in addition to dim(), length(), and dimnames()):
nzindex(x)
nzdata(x)
sparsity(x)
## Two low-level utilities:
dense2sparse(x)
sparse2dense(sas)
|
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
|
nzdata |
A vector of length |
dimnames |
The dimnames of the object to be created. Must be |
check |
Should the object be validated upon construction? |
x |
A SparseArraySeed object for the An array-like object for |
sas |
A SparseArraySeed object. |
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.
SparseArraySeed-utils for native operations on SparseArraySeed objects.
The read_block
function.
blockApply
and family for convenient block
processing of an array-like object.
extract_array
.
DelayedArray objects.
arrayInd
in the base package.
array objects in base R.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | ## ---------------------------------------------------------------------
## EXAMPLE 1
## ---------------------------------------------------------------------
dim1 <- 5:3
nzindex1 <- Lindex2Mindex(sample(60, 8), 5:3)
nzdata1 <- 11.11 * seq_len(nrow(nzindex1))
sas1 <- SparseArraySeed(dim1, nzindex1, nzdata1)
dim(sas1) # the dimensions of the implicit array
length(sas1) # the length of the implicit array
nzindex(sas1)
nzdata(sas1)
type(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)
class(sas2)
dim(sas2)
length(sas2)
nzindex(sas2)
nzdata(sas2)
type(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))))
## ---------------------------------------------------------------------
## COERCION FROM/TO dgCMatrix OR lgCMatrix OBJECTS
## ---------------------------------------------------------------------
## dgCMatrix and lgCMatrix objects are defined in the Matrix package.
M2 <- as(sas2, "dgCMatrix")
stopifnot(identical(M2, as(m2, "dgCMatrix")))
sas2b <- as(M2, "SparseArraySeed")
## 'sas2b' is the same as 'sas2' except that 'nzdata(sas2b)' has
## type "double" instead of "integer":
stopifnot(all.equal(sas2b, sas2))
typeof(nzdata(sas2b)) # double
typeof(nzdata(sas2)) # integer
m3 <- m2 == 99 # logical matrix
sas3 <- dense2sparse(m3)
class(sas3)
type(sas3)
M3 <- as(sas3, "lgCMatrix")
stopifnot(identical(M3, as(m3, "lgCMatrix")))
sas3b <- as(M3, "SparseArraySeed")
stopifnot(identical(sas3, sas3b))
## ---------------------------------------------------------------------
## 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:
nzindex4 <- cbind(sample(25000, 600000, replace=TRUE),
sample(195000, 600000, replace=TRUE))
nzdata4 <- runif(600000)
sas4 <- SparseArraySeed(c(25000, 195000), nzindex4, nzdata4)
sparsity(sas4)
M4 <- DelayedArray(sas4)
M4
colSums(M4[ , 1:20])
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.