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