drop0                 package:Matrix                 R Documentation

_D_r_o_p "_E_x_p_l_i_c_i_t _Z_e_r_o_e_s" _f_r_o_m _a _S_p_a_r_s_e _M_a_t_r_i_x

_D_e_s_c_r_i_p_t_i_o_n:

     Returns a sparse matrix with no "explicit zeroes", i.e., all zero
     or 'FALSE' entries are dropped from the explicitly indexed matrix
     entries.

_U_s_a_g_e:

     drop0(x, tol = 0, is.Csparse = NA)

_A_r_g_u_m_e_n_t_s:

       x: a Matrix, typically sparse, i.e., inheriting from
          'sparseMatrix'.

     tol: non-negative number to be used as tolerance for checking if
          an entry x[i,j] should be considered to be zero.

is.Csparse: logical indicating prior knowledge about the "Csparseness"
          of 'x'.  This exists for possible speedup reasons only.

_V_a_l_u_e:

     a Matrix like 'x' but with no explicit zeros, i.e., '!any(x@x ==
     0)', always inheriting from 'CsparseMatrix'.

_N_o_t_e:

     When a sparse matrix is the result of matrix multiplications, you
     may want to consider combining 'drop0()' with 'zapsmall()', see
     the example.

_S_e_e _A_l_s_o:

     'spMatrix', class 'sparseMatrix'

_E_x_a_m_p_l_e_s:

     m <- spMatrix(10,20, i= 1:8, j=2:9,
                   x = c(0:2,3:-1))
     m
     drop0(m)

     ## A larger example:
     t5 <- new("dtCMatrix", Dim = c(5L, 5L), uplo = "L",
               x = c(10, 1, 3, 10, 1, 10, 1, 10, 10),
               i = c(0L,2L,4L, 1L, 3L,2L,4L, 3L, 4L),
               p = c(0L, 3L, 5L, 7:9))
     TT <- kronecker(t5, kronecker(kronecker(t5,t5), t5))
     IT <- solve(TT)
     I. <- TT %*% IT ;  nnzero(I.) # 697 ( = 625 + 72 )
     I.0 <- drop0(zapsmall(I.))
     stopifnot(all(I.0 == Diagonal(625)))

