# formatSparseM: Formatting Sparse Numeric Matrices Utilities In Matrix: Sparse and Dense Matrix Classes and Methods

## Description

Utilities for formatting sparse numeric matrices in a flexible way. These functions are used by the `format` and `print` methods for sparse matrices and can be applied as well to standard R matrices. Note that all arguments but the first are optional.

`formatSparseM()` is the main “workhorse” of `formatSpMatrix`, the `format` method for sparse matrices.

`.formatSparseSimple()` is a simple helper function, also dealing with (short/empty) column names construction.

## Usage

 ```1 2 3 4 5 6 7``` ```formatSparseM(x, zero.print = ".", align = c("fancy", "right"), m = as(x,"matrix"), asLogical=NULL, uniDiag=NULL, digits=NULL, cx, iN0, dn = dimnames(m)) .formatSparseSimple(m, asLogical=FALSE, digits=NULL, col.names, note.dropping.colnames = TRUE, dn=dimnames(m)) ```

## Arguments

 `x` an R object inheriting from class `sparseMatrix`. `zero.print` character which should be used for structural zeroes. The default `"."` may occasionally be replaced by `" "` (blank); using `"0"` would look almost like `print()`ing of non-sparse matrices. `align` a string specifying how the `zero.print` codes should be aligned, see `formatSpMatrix`. `m` (optional) a (standard R) `matrix` version of `x`. `asLogical` should the matrix be formatted as a logical matrix (or rather as a numeric one); mostly for `formatSparseM()`. `uniDiag` logical indicating if the diagonal entries of a sparse unit triangular or unit-diagonal matrix should be formatted as `"I"` instead of `"1"` (to emphasize that the 1's are “structural”). `digits` significant digits to use for printing, see `print.default`. `cx` (optional) character matrix; a formatted version of `x`, still with strings such as `"0.00"` for the zeros. `iN0` (optional) integer vector, specifying the location of the non-zeroes of `x`. `col.names, note.dropping.colnames` see `formatSpMatrix`. `dn` `dimnames` to be used; a list (of length two) with row and column names (or `NULL`).

## Value

a character matrix like `cx`, where the zeros have been replaced with (padded versions of) `zero.print`. As this is a dense matrix, do not use these functions for really large (really) sparse matrices!

## Author(s)

Martin Maechler

`formatSpMatrix` which calls `formatSparseM()` and is the `format` method for sparse matrices.
`printSpMatrix` which is used by the (typically implicitly called) `show` and `print` methods for sparse matrices.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12``` ```m <- suppressWarnings(matrix(c(0, 3.2, 0,0, 11,0,0,0,0,-7,0), 4,9)) fm <- formatSparseM(m) noquote(fm) ## nice, but this is nicer {with "units" vertically aligned}: print(fm, quote=FALSE, right=TRUE) ## and "the same" as : Matrix(m) ## align = "right" is cheaper --> the "." are not aligned: noquote(f2 <- formatSparseM(m,align="r")) stopifnot(f2 == fm | m == 0, dim(f2) == dim(m), (f2 == ".") == (m == 0)) ```