User friendly construction of a sparse matrix (inheriting from class TsparseMatrix) from the triplet representation.
This is much less flexible than sparseMatrix() and hence somewhat deprecated.
spMatrix(nrow, ncol, i = integer(0L), j = integer(0L), x = double(0L))
Arguments
nrow, ncol: integers specifying the desired number of rows and columns.
i,j: integer vectors of the same length specifying the locations of the non-zero (or non-TRUE) entries of the matrix.
x: atomic vector of the same length as i and j, specifying the values of the non-zero entries.
Returns
A sparse matrix in triplet form, as an object inheriting from both TsparseMatrix and generalMatrix.
The matrix M will have M[i[k], j[k]] == x[k], for k=1,2,…,n, where n = length(i) and M[ i', j' ] == 0 for all other pairs (i′,j′).
See Also
Matrix(*, sparse=TRUE) for the more usual constructor of such matrices. Then, sparseMatrix
is more general and flexible than spMatrix() and by default returns a CsparseMatrix which is often slightly more desirable. Further, bdiag and Diagonal for (block-)diagonal matrix constructors.
Consider TsparseMatrix and similar class definition help files.
Examples
## simple exampleA <- 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 usedL <- spMatrix(9,30, i = rep(1:9,3),1:27,(1:27)%%4!=1)L # an "lgTMatrix"## A simplified predecessor of Matrix' rsparsematrix() function : 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)