Matrix-class
Virtual Class "Matrix" Class of MatricesThe Matrix
class is a class contained by all actual classes in the Matrix package. It is a “virtual” class.
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.
signature(x = "Matrix", logarithm = "missing")
: and
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()
.).
signature(x = "Matrix")
: As diff()
for traditional matrices, i.e., applying diff()
to each column.
signature(x = "Matrix")
: extract matrix dimensions 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))
.
signature(x = "Matrix")
: extract dimnames
.
signature(x = "Matrix", value = "list")
: set the dimnames
to a list
of length 2, see dimnames<-
.
signature(x = "Matrix")
: simply defined as prod(dim(x))
(and hence of mode "double"
).
signature(object = "Matrix")
: show
method for print
ing. For printing sparse matrices, see printSpMatrix
.
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.
signature(object = "Matrix")
: return only the “tail”, i.e., the last few rows of the respective matrix.
signature(x = "Matrix")
: the same as as(x, "matrix")
; see also the note below.
signature(x = "Matrix", mode = "missing")
: as.vector(m)
should be identical to as.vector(as(m,
"matrix"))
, implemented more efficiently for some subclasses.
etc, similarly.
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
.
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.
Douglas Bates [email protected] and Martin Maechler
the classes dgeMatrix
, dgCMatrix
, and function Matrix
for construction (and examples).
Methods, e.g., for kronecker
.
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))
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.