| Matrix-class {Matrix} | R Documentation |
The 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"): 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.
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 bates@stat.wisc.edu 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.attr=FALSE))