spMatrix               package:Matrix               R Documentation

_S_p_a_r_s_e _M_a_t_r_i_x _C_o_n_s_t_r_u_c_t_o_r _F_r_o_m _T_r_i_p_l_e_t

_D_e_s_c_r_i_p_t_i_o_n:

     User friendly construction of a sparse matrix (inheriting from
     class 'TsparseMatrix') from the triplet representation.

_U_s_a_g_e:

     spMatrix(nrow, ncol, i = integer(), j = integer(), x = numeric())

_A_r_g_u_m_e_n_t_s:

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.

_V_a_l_u_e:

     A sparse matrix in triplet form, as an R 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').

_S_e_e _A_l_s_o:

     'Matrix(*, sparse=TRUE)' for the more usual constructor of such
     matrices; further 'bdiag' and 'Diagonal' for (block-)diagonal
     matrix constructors.

     Consider 'TsparseMatrix' and similar class definition help files.

_E_x_a_m_p_l_e_s:

     ## 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)

