# nnzero: The Number of Non-Zero Values of a Matrix In Matrix: Sparse and Dense Matrix Classes and Methods

 nnzero R Documentation

## The Number of Non-Zero Values of a Matrix

### Description

Returns the number of non-zero values of a numeric-like R object, and in particular an object `x` inheriting from class `Matrix`.

### Usage

```nnzero(x, na.counted = NA)
```

### Arguments

 `x` an R object, typically inheriting from class `Matrix` or `numeric`. `na.counted` a `logical` describing how `NA`s should be counted. There are three possible settings for `na.counted`: TRUE`NA`s are counted as non-zero (since “they are not zero”). NA(default)the result will be `NA` if there are `NA`'s in `x` (since “NA's are not known, i.e., may be zero”). FALSE`NA`s are omitted from `x` before the non-zero entries are counted. For sparse matrices, you may often want to use `na.counted = TRUE`.

### Value

the number of non zero entries in `x` (typically `integer`).

Note that for a symmetric sparse matrix `S` (i.e., inheriting from class `symmetricMatrix`), `nnzero(S)` is typically twice the `length(S@x)`.

### Methods

`signature(x = "ANY")`

the default method for non-`Matrix` class objects, simply counts the number `0`s in `x`, counting `NA`'s depending on the `na.counted` argument, see above.

`signature(x = "denseMatrix")`

conceptually the same as for traditional `matrix` objects, care has to be taken for `"symmetricMatrix"` objects.

`signature(x = "diagonalMatrix")`, and `signature(x = "indMatrix")`

fast simple methods for these special `"sparseMatrix"` classes.

`signature(x = "sparseMatrix")`

typically, the most interesting method, also carefully taking `"symmetricMatrix"` objects into account.

The `Matrix` class also has a `length` method; typically, `length(M)` is much larger than `nnzero(M)` for a sparse matrix M, and the latter is a better indication of the size of `M`.

`drop0`, `zapsmall`.

### Examples

```m <- Matrix(0+1:28, nrow = 4)
m[-3,c(2,4:5,7)] <- m[ 3, 1:4] <- m[1:3, 6] <- 0
(mT <- as(m, "TsparseMatrix"))
nnzero(mT)
(S <- crossprod(mT))
nnzero(S)
str(S) # slots are smaller than nnzero()
stopifnot(nnzero(S) == sum(as.matrix(S) != 0))# failed earlier

data(KNex)
M <- KNex\$mm
class(M)
dim(M)
length(M); stopifnot(length(M) == prod(dim(M)))
nnzero(M) # more relevant than length
## the above are also visible from
str(M)
```

Matrix documentation built on Nov. 11, 2022, 9:06 a.m.