Matrix-class.Rd
The Matrix
class is a class contained by all actual
classes in the Matrix package. It is a “virtual” class.
Dim
an integer vector of length 2 giving the dimensions of the matrix.
Dimnames
a list of length 2. Each element must
be NULL
or a character vector of length equal to the
corresponding element of Dim
.
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(x = "Matrix")
: typically used for
"dMatrix"
: round()
matrix entries
such that (relatively) very small entries become zero exactly.
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.
slotNames("Matrix")
#> [1] "Dim" "Dimnames"
cl <- getClass("Matrix")
names(cl@subclasses) # more than 40 ..
#> [1] "generalMatrix" "symmetricMatrix" "triangularMatrix" "nMatrix"
#> [5] "lMatrix" "iMatrix" "dMatrix" "zMatrix"
#> [9] "denseMatrix" "sparseMatrix" "ndenseMatrix" "ldenseMatrix"
#> [13] "ddenseMatrix" "unpackedMatrix" "packedMatrix" "ndenseMatrix"
#> [17] "ldenseMatrix" "ddenseMatrix" "CsparseMatrix" "RsparseMatrix"
#> [21] "TsparseMatrix" "diagonalMatrix" "nsparseMatrix" "lsparseMatrix"
#> [25] "dsparseMatrix" "ngeMatrix" "nsyMatrix" "ntrMatrix"
#> [29] "nspMatrix" "ntpMatrix" "lgeMatrix" "lsyMatrix"
#> [33] "ltrMatrix" "lspMatrix" "ltpMatrix" "dgeMatrix"
#> [37] "dsyMatrix" "dpoMatrix" "corMatrix" "dtrMatrix"
#> [41] "dspMatrix" "dppMatrix" "copMatrix" "dtpMatrix"
#> [45] "ngCMatrix" "nsCMatrix" "ntCMatrix" "ngRMatrix"
#> [49] "nsRMatrix" "ntRMatrix" "ngTMatrix" "nsTMatrix"
#> [53] "ntTMatrix" "ndiMatrix" "lgCMatrix" "lsCMatrix"
#> [57] "ltCMatrix" "lgRMatrix" "lsRMatrix" "ltRMatrix"
#> [61] "lgTMatrix" "lsTMatrix" "ltTMatrix" "ldiMatrix"
#> [65] "dgCMatrix" "dsCMatrix" "dtCMatrix" "dgRMatrix"
#> [69] "dsRMatrix" "dtRMatrix" "dgTMatrix" "dsTMatrix"
#> [73] "dtTMatrix" "ddiMatrix" "indMatrix" "pMatrix"
showClass("Matrix")#> output with slots and all subclasses
#> Virtual Class "Matrix" [package "Matrix"]
#>
#> Slots:
#>
#> Name: Dim Dimnames
#> Class: integer list
#>
#> Known Subclasses:
#> Class "generalMatrix", directly
#> Class "symmetricMatrix", directly
#> Class "triangularMatrix", directly
#> Class "nMatrix", directly
#> Class "lMatrix", directly
#> Class "iMatrix", directly
#> Class "dMatrix", directly
#> Class "zMatrix", directly
#> Class "denseMatrix", directly
#> Class "sparseMatrix", directly
#> Class "ndenseMatrix", by class "nMatrix", distance 2
#> Class "ldenseMatrix", by class "lMatrix", distance 2
#> Class "ddenseMatrix", by class "dMatrix", distance 2
#> Class "unpackedMatrix", by class "denseMatrix", distance 2
#> Class "packedMatrix", by class "denseMatrix", distance 2
#> Class "ndenseMatrix", by class "denseMatrix", distance 2
#> Class "ldenseMatrix", by class "denseMatrix", distance 2
#> Class "ddenseMatrix", by class "denseMatrix", distance 2
#> Class "CsparseMatrix", by class "sparseMatrix", distance 2
#> Class "RsparseMatrix", by class "sparseMatrix", distance 2
#> Class "TsparseMatrix", by class "sparseMatrix", distance 2
#> Class "diagonalMatrix", by class "sparseMatrix", distance 2
#> Class "nsparseMatrix", by class "nMatrix", distance 2
#> Class "lsparseMatrix", by class "lMatrix", distance 2
#> Class "dsparseMatrix", by class "dMatrix", distance 2
#> Class "ngeMatrix", by class "unpackedMatrix", distance 3
#> Class "nsyMatrix", by class "unpackedMatrix", distance 3
#> Class "ntrMatrix", by class "unpackedMatrix", distance 3
#> Class "nspMatrix", by class "packedMatrix", distance 3
#> Class "ntpMatrix", by class "packedMatrix", distance 3
#> Class "lgeMatrix", by class "unpackedMatrix", distance 3
#> Class "lsyMatrix", by class "unpackedMatrix", distance 3
#> Class "ltrMatrix", by class "unpackedMatrix", distance 3
#> Class "lspMatrix", by class "packedMatrix", distance 3
#> Class "ltpMatrix", by class "packedMatrix", distance 3
#> Class "dgeMatrix", by class "unpackedMatrix", distance 3
#> Class "dsyMatrix", by class "unpackedMatrix", distance 3
#> Class "dpoMatrix", by class "dsyMatrix", distance 3
#> Class "corMatrix", by class "dpoMatrix", distance 4
#> Class "dtrMatrix", by class "unpackedMatrix", distance 3
#> Class "dspMatrix", by class "packedMatrix", distance 3
#> Class "dppMatrix", by class "dspMatrix", distance 3
#> Class "copMatrix", by class "dppMatrix", distance 4
#> Class "dtpMatrix", by class "packedMatrix", distance 3
#> Class "ngCMatrix", by class "CsparseMatrix", distance 3
#> Class "nsCMatrix", by class "CsparseMatrix", distance 3
#> Class "ntCMatrix", by class "CsparseMatrix", distance 3
#> Class "ngRMatrix", by class "RsparseMatrix", distance 3
#> Class "nsRMatrix", by class "RsparseMatrix", distance 3
#> Class "ntRMatrix", by class "RsparseMatrix", distance 3
#> Class "ngTMatrix", by class "TsparseMatrix", distance 3
#> Class "nsTMatrix", by class "TsparseMatrix", distance 3
#> Class "ntTMatrix", by class "TsparseMatrix", distance 3
#> Class "ndiMatrix", by class "diagonalMatrix", distance 3
#> Class "lgCMatrix", by class "CsparseMatrix", distance 3
#> Class "lsCMatrix", by class "CsparseMatrix", distance 3
#> Class "ltCMatrix", by class "CsparseMatrix", distance 3
#> Class "lgRMatrix", by class "RsparseMatrix", distance 3
#> Class "lsRMatrix", by class "RsparseMatrix", distance 3
#> Class "ltRMatrix", by class "RsparseMatrix", distance 3
#> Class "lgTMatrix", by class "TsparseMatrix", distance 3
#> Class "lsTMatrix", by class "TsparseMatrix", distance 3
#> Class "ltTMatrix", by class "TsparseMatrix", distance 3
#> Class "ldiMatrix", by class "diagonalMatrix", distance 3
#> Class "dgCMatrix", by class "CsparseMatrix", distance 3
#> Class "dsCMatrix", by class "CsparseMatrix", distance 3
#> Class "dtCMatrix", by class "CsparseMatrix", distance 3
#> Class "dgRMatrix", by class "RsparseMatrix", distance 3
#> Class "dsRMatrix", by class "RsparseMatrix", distance 3
#> Class "dtRMatrix", by class "RsparseMatrix", distance 3
#> Class "dgTMatrix", by class "TsparseMatrix", distance 3
#> Class "dsTMatrix", by class "TsparseMatrix", distance 3
#> Class "dtTMatrix", by class "TsparseMatrix", distance 3
#> Class "ddiMatrix", by class "diagonalMatrix", distance 3
#> Class "indMatrix", by class "sparseMatrix", distance 2
#> Class "pMatrix", by class "indMatrix", distance 3
(M <- Matrix(c(0,1,0,0), 6, 4))
#> 6 x 4 sparse Matrix of class "dgCMatrix"
#>
#> [1,] . . . .
#> [2,] 1 . 1 .
#> [3,] . . . .
#> [4,] . 1 . 1
#> [5,] . . . .
#> [6,] 1 . 1 .
dim(M)
#> [1] 6 4
diag(M)
#> [1] 0 0 0 1
cm <- M[1:4,] + 10*Diagonal(4)
diff(M)
#> 5 x 4 sparse Matrix of class "dgCMatrix"
#>
#> [1,] 1 . 1 .
#> [2,] -1 . -1 .
#> [3,] . 1 . 1
#> [4,] . -1 . -1
#> [5,] 1 . 1 .
## can reshape it even :
dim(M) <- c(2, 12)
M
#> 2 x 12 sparse Matrix of class "dgCMatrix"
#>
#> [1,] . . . . . . . . . . . .
#> [2,] 1 . 1 . 1 . 1 . 1 . 1 .
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))