# drop0: Drop "Explicit Zeroes" from a Sparse Matrix In Matrix: Sparse and Dense Matrix Classes and Methods

## Description

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

## Usage

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

## Arguments

 `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.

## Value

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

## Note

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

`spMatrix`, class `sparseMatrix`; `nnzero`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```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.)) ## which actually can be more efficiently achieved by I.. <- drop0(I., tol = 1e-15) stopifnot(all(I.0 == Diagonal(625)), nnzero(I..) == 625) ```