# spam {spam}

### Description

This group of functions evaluates and coerces changes in class structure.

### Usage

spam(x, nrow = 1, ncol = 1, eps = .Spam$eps) as.spam(x, eps = .Spam$eps) is.spam(x)

### Arguments

- x
- is a matrix (of either dense or sparse form), a list, vector object or a distance object
- nrow
- number of rows of matrix
- ncol
- number of columns of matrix
- eps
- A tolerance parameter: elements of
`x`

such that`abs(x) < eps`

set to zero. Defaults to`eps = .Spam$eps`

### Details

The functions `spam`

and `as.spam`

act like `matrix`

and `as.matrix`

to coerce an object to a sparse matrix object of class `spam`

.

If `x`

is a list, it should contain either two or three elements. In case of the former, the list should contain a `n`

by two matrix of indicies (called `ind`

) and the values. In case of the latter, the list should contain three vectors containing the row, column indices (called `i`

and `j`

) and the values. In both cases partial matching is done. In case there are several triplets with the same `i`

, `j`

, the values are added. `eps`

should be at least as large as `.Machine$double.eps`

.

### Values

A valid `spam`

object.

`is.spam`

returns `TRUE`

if `x`

is a `spam`

object.

### References

Reinhard Furrer, Stephan R. Sain (2010). "spam: A Sparse Matrix R Package with Emphasis on MCMC Methods for Gaussian Markov Random Fields.", *Journal of Statistical Software*, 36(10), 1-25, http://www.jstatsoft.org/v36/i10/.

### Note

The zero matrix has the element zero stored in (1,1).

The functions do not test the presence of `NA/NaN/Inf`

. Virtually all call a Fortran routine with the `NAOK=NAOK`

argument, which defaults to `FALSE`

resulting in an error. Hence, the `NaN`

do not always properly propagate through (i.e. `spam`

is not IEEE-754 compliant).

### See Also

`SPAM`

for a general overview of the package; `spam.options`

for details about the `safemode`

flag; `read.MM`

and `foreign`

to create `spam`

matrices from MatrixMarket files and from certain Matrix or SparseM formats.

### Examples

# old message, do not loop, when you create a large sparse matrix set.seed(13) nz <- 128 ln <- nz^2 smat <- spam(0,ln,ln) is <- sample(ln,nz) js <- sample(ln,nz) system.time(for (i in 1:nz) smat[is[i], js[i]] <- i) system.time(smat[cbind(is,js)] <- 1:nz) getClass("spam") spam.options(NAOK=TRUE) as.spam( c(1, NA))

Documentation reproduced from package spam, version 1.3-0. License: LGPL-2