1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
\name{Matrix}
\alias{Matrix}
\title{Construct a Classed Matrix}
\usage{
Matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dimnames=NULL,
sparse = NULL, forceCheck = FALSE)
}
\description{
Construct a Matrix of a class that inherits from \code{Matrix}.
}
\arguments{
\item{data}{an optional numeric data vector or matrix.}
\item{nrow}{the desired number of rows}
\item{ncol}{the desired number of columns}
\item{byrow}{logical. If \code{FALSE} (the default) the matrix is
filled by columns, otherwise the matrix is filled by rows.}
\item{dimnames}{a \code{\link{dimnames}} attribute for the matrix: a
\code{list} of two character components. They are set if not
\code{\link{NULL}} (as per default).}
\item{sparse}{logical or \code{NULL}, specifying if the result should
be sparse or not. By default, it is made sparse when more than half
of the entries are 0.}
\item{forceCheck}{logical indicating if the checks for structure
should even happen when \code{data} is already a \code{"Matrix"}
object.}
}
\value{
Returns an \code{nrow} by \code{ncol} matrix of a class that
inherits from \code{"Matrix"}.
}
\details{
If either of \code{nrow} or \code{ncol} is not given, an attempt is
made to infer it from the length of \code{data} and the other
parameter.
Further, \code{Matrix()} makes efforts to keep \code{\link{logical}}
matrices logical, i.e., inheriting from class \code{\linkS4class{lMatrix}},
and to determine specially structured matrices such as symmetric,
triangular or diagonal ones. Note that a \emph{symmetric} matrix also
needs symmetric \code{\link{dimnames}}, e.g., by specifying
\code{dimnames = list(NULL,NULL)}, see the examples.
Most of the time, the function works via a traditional (\emph{full})
\code{\link{matrix}}. However, \code{Matrix(0, nrow,ncol)} directly
constructs an \dQuote{empty} \linkS4class{sparseMatrix}, as does
\code{Matrix(FALSE, *)}.
Although it is sometime possible to mix unclassed matrices (created
with \code{matrix}) with ones of class \code{"Matrix"}, it is much
safer to always use carefully constructed ones of class
\code{"Matrix"}.
}
\seealso{
The classes \code{\linkS4class{Matrix}},
\code{\linkS4class{symmetricMatrix}},
\code{\linkS4class{triangularMatrix}}, and
\code{\linkS4class{diagonalMatrix}}; further,
\code{\link{matrix}}.
}
\examples{
Matrix(0, 3, 2) # 3 by 2 matrix of zeros -> sparse
Matrix(0, 3, 2, sparse=FALSE)# forced 'dense'
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)# -> sparse...
Matrix(diag(4) >= 0)# -> "lsyMatrix" (of all 'TRUE')
## triangular
l3 <- upper.tri(matrix(,3,3))
Matrix(l3) # -> "ltCMatrix"
Matrix(! l3)# -> "ltrMatrix"
as(l3, "CsparseMatrix")
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 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
stopifnot(is(As, "symmetricMatrix"),
is(Matrix(0, 3,3), "sparseMatrix"),
is(Matrix(FALSE, 1,1), "sparseMatrix"))
}
\keyword{array}
\keyword{algebra}
|