Matrix
Construct a Classed Matrix
Description
Construct a Matrix of a class that inherits from Matrix
.
Usage
Matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dimnames=NULL, sparse = NULL, doDiag = TRUE, forceCheck = FALSE)
Arguments
data | an optional numeric data vector or matrix. |
nrow | when |
ncol | when |
byrow | logical. If |
dimnames | a |
sparse | logical or |
doDiag | logical indicating if a Otherwise, if |
forceCheck | logical indicating if the checks for structure should even happen when |
Details
If either of nrow
or ncol
is not given, an attempt is made to infer it from the length of data
and the other parameter. Further, Matrix()
makes efforts to keep logical
matrices logical, i.e., inheriting from class lMatrix
, and to determine specially structured matrices such as symmetric, triangular or diagonal ones. Note that a symmetric matrix also needs symmetric dimnames
, e.g., by specifying dimnames = list(NULL,NULL)
, see the examples.
Most of the time, the function works via a traditional (full) matrix
. However, Matrix(0, nrow,ncol)
directly constructs an “empty” sparseMatrix, as does Matrix(FALSE, *)
.
Although it is sometime possible to mix unclassed matrices (created with matrix
) with ones of class "Matrix"
, it is much safer to always use carefully constructed ones of class "Matrix"
.
Value
Returns matrix of a class that inherits from "Matrix"
. Only if data
is not a matrix
and does not already inherit from class Matrix
are the arguments nrow
, ncol
and byrow
made use of.
See Also
The classes Matrix
, symmetricMatrix
, triangularMatrix
, and diagonalMatrix
; further, matrix
.
Special matrices can be constructed, e.g., via sparseMatrix
(sparse), bdiag
(block-diagonal), bandSparse
(banded sparse), or Diagonal
.
Examples
Matrix(0, 3, 2) # 3 by 2 matrix of zeros -> sparse Matrix(0, 3, 2, sparse=FALSE)# -> 'dense' ## 4 cases - 3 different results : Matrix(0, 2, 2) # diagonal ! Matrix(0, 2, 2, sparse=FALSE)# (ditto) Matrix(0, 2, 2, doDiag=FALSE)# -> sparse symm. "dsCMatrix" Matrix(0, 2, 2, sparse=FALSE, doDiag=FALSE)# -> dense symm. "dsyMatrix" Matrix(1:6, 3, 2) # a 3 by 2 matrix (+ integer warning) Matrix(1:6 + 1, nrow=3) ## logical ones: Matrix(diag(4) > 0) # -> "ldiMatrix" with diag = "U" Matrix(diag(4) > 0, sparse=TRUE) # (ditto) Matrix(diag(4) >= 0) # -> "lsyMatrix" (of all 'TRUE') ## triangular l3 <- upper.tri(matrix(,3,3)) (M <- Matrix(l3)) # -> "ltCMatrix" Matrix(! l3) # -> "ltrMatrix" as(l3, "CsparseMatrix")# "lgCMatrix" Matrix(1:9, nrow=3, dimnames = list(c("a", "b", "c"), c("A", "B", "C"))) (I3 <- Matrix(diag(3)))# identity, i.e., unit "diagonalMatrix" str(I3) # note 'diag = "U"' and the empty 'x' slot (A <- cbind(a=c(2,1), b=1:2))# symmetric *apart* from dimnames Matrix(A) # hence 'dgeMatrix' (As <- Matrix(A, dimnames = list(NULL,NULL)))# -> symmetric forceSymmetric(A) # also symmetric, w/ symm. dimnames stopifnot(is(As, "symmetricMatrix"), is(Matrix(0, 3,3), "sparseMatrix"), is(Matrix(FALSE, 1,1), "sparseMatrix"))
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.