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

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.

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.attr=FALSE))

[Package Matrix version 1.0-11 Index]