
Last chance! 50% off unlimited learning
Sale ends in
TsparseMatrix
) from the triplet representation.spMatrix(nrow, ncol, i = integer(), j = integer(), x = numeric())
TRUE
) entries of the matrix.i
and j
,
specifying the values of the non-zero entries.TsparseMatrix
and
generalMatrix
. The matrix $M$ will have
M[i[k], j[k]] == x[k]
, for $k = 1,2,\ldots, n$, where
n = length(i)
and
M[ i', j' ] == 0
for all other pairs $(i',j')$.
Matrix(*, sparse=TRUE)
for the more usual
constructor of such matrices; similarly, sparseMatrix
which is a bit more general than spMatrix()
and returns a
CsparseMatrix
which is often slightly more
desirable. Further, bdiag
and
Diagonal
for (block-)diagonal matrix constructors. Consider
and similar class
definition help files.
## simple example
A <- spMatrix(10,20, i = c(1,3:8),
j = c(2,9,6:10),
x = 7 * (1:7))
A # a "dgTMatrix"
summary(A)
str(A) # note that *internally* 0-based indices (i,j) are used
L <- spMatrix(9, 30, i = rep(1:9, 3), 1:27,
(1:27) %% 4 != 1)
L # an "lgTMatrix"
### This is a useful utility, to be used for experiments :
rSpMatrix <- function(nrow, ncol, nnz,
rand.x = function(n) round(rnorm(nnz), 2))
{
## Purpose: random sparse matrix
## --------------------------------------------------------------
## Arguments: (nrow,ncol): dimension
## nnz : number of non-zero entries
## rand.x: random number generator for 'x' slot
## --------------------------------------------------------------
## Author: Martin Maechler, Date: 14.-16. May 2007
stopifnot((nnz <- as.integer(nnz)) >= 0,
nrow >= 0, ncol >= 0,
nnz <= nrow * ncol)
spMatrix(nrow, ncol,
i = sample(nrow, nnz, replace = TRUE),
j = sample(ncol, nnz, replace = TRUE),
x = rand.x(nnz))
}
M1 <- rSpMatrix(100000, 20, nnz = 200)
summary(M1)
Run the code above in your browser using DataLab