Matrix-class {Matrix} R Documentation

## Virtual Class "Matrix" Class of Matrices

### Description

The `Matrix` class is a class contained by all actual classes in the Matrix package. It is a “virtual” class.

### Slots

Common to all matrix objects in the package:

`Dim`:

Object of class `"integer"` - the dimensions of the matrix - must be an integer vector with exactly two non-negative values.

`Dimnames`:

list of length two; each component containing NULL or a `character` vector length equal the corresponding `Dim` element.

### Methods

determinant

`signature(x = "Matrix", logarithm = "missing")`: and

determinant

`signature(x = "Matrix", logarithm = "logical")`: compute the (\log) determinant of `x`. The method chosen depends on the actual Matrix class of `x`. Note that `det` also works for all our matrices, calling the appropriate `determinant()` method. The `Matrix::det` is an exact copy of `base::det`, but in the correct namespace, and hence calling the S4-aware version of `determinant()`.).

diff

`signature(x = "Matrix")`: As `diff()` for traditional matrices, i.e., applying `diff()` to each column.

dim

`signature(x = "Matrix")`: extract matrix dimensions `dim`.

dim<-

`signature(x = "Matrix", value = "ANY")`: where `value` is integer of length 2. Allows to reshape Matrix objects, but only when `prod(value) == prod(dim(x))`.

dimnames

`signature(x = "Matrix")`: extract `dimnames`.

dimnames<-

`signature(x = "Matrix", value = "list")`: set the `dimnames` to a `list` of length 2, see `dimnames<-`.

length

`signature(x = "Matrix")`: simply defined as `prod(dim(x))` (and hence of mode `"double"`).

show

`signature(object = "Matrix")`: `show` method for `print`ing. For printing sparse matrices, see `printSpMatrix`.

image

`signature(object = "Matrix")`: draws an `image` of the matrix entries, using `levelplot()` from package lattice.

`signature(object = "Matrix")`: return only the “head”, i.e., the first few rows.

tail

`signature(object = "Matrix")`: return only the “tail”, i.e., the last few rows of the respective matrix.

as.matrix, as.array

`signature(x = "Matrix")`: the same as `as(x, "matrix")`; see also the note below.

as.vector

`signature(x = "Matrix", mode = "missing")`: `as.vector(m)` should be identical to ```as.vector(as(m, "matrix"))```, implemented more efficiently for some subclasses.

as(x, "vector"), as(x, "numeric")

etc, similarly.

coerce

`signature(from = "ANY", to = "Matrix")`: This relies on a correct `as.matrix()` method for `from`.

There are many more methods that (conceptually should) work for all `"Matrix"` objects, e.g., `colSums`, `rowMeans`. Even base functions may work automagically (if they first call `as.matrix()` on their principal argument), e.g., `apply`, `eigen`, `svd` or `kappa` all do work via coercion to a “traditional” (dense) `matrix`.

### Note

Loading the `Matrix` namespace “overloads” `as.matrix` and `as.array` in the base namespace by the equivalent of `function(x) as(x, "matrix")`. Consequently, `as.matrix(m)` or `as.array(m)` will properly work when `m` inherits from the `"Matrix"` class — also for functions in package base and other packages. E.g., `apply` or `outer` can therefore be applied to `"Matrix"` matrices.

### Author(s)

Douglas Bates bates@stat.wisc.edu and Martin Maechler

the classes `dgeMatrix`, `dgCMatrix`, and function `Matrix` for construction (and examples).

Methods, e.g., for `kronecker`.

### Examples

```slotNames("Matrix")

cl <- getClass("Matrix")
names(cl@subclasses) # more than 40 ..

showClass("Matrix")#> output with slots and all subclasses

(M <- Matrix(c(0,1,0,0), 6, 4))
dim(M)
diag(M)
cm <- M[1:4,] + 10*Diagonal(4)
diff(M)
## can reshape it even :
dim(M) <- c(2, 12)
M
stopifnot(identical(M, Matrix(c(0,1,0,0), 2,12)),
all.equal(det(cm),
determinant(as(cm,"matrix"), log=FALSE)\$modulus,
check.attributes=FALSE))
```

[Package Matrix version 1.2-18 Index]