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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
\name{sparseMatrix-class}
\docType{class}
\title{Virtual Class "sparseMatrix" --- Mother of Sparse Matrices}
\alias{sparseMatrix-class}
%% Group methods
\alias{Math,sparseMatrix-method}
%\alias{Math2,sparseMatrix,numeric-method}
\alias{Ops,sparseMatrix,sparseMatrix-method}
\alias{Ops,sparseMatrix,numeric-method}
\alias{Ops,numeric,sparseMatrix-method}
\alias{Ops,diagonalMatrix,sparseMatrix-method}
\alias{Ops,sparseMatrix,diagonalMatrix-method}
%
\alias{cbind2,sparseMatrix,sparseMatrix-method}
\alias{cbind2,sparseMatrix,matrix-method}
\alias{cbind2,matrix,sparseMatrix-method}
\alias{cbind2,sparseMatrix,numeric-method}
\alias{cbind2,numeric,sparseMatrix-method}
\alias{rbind2,sparseMatrix,sparseMatrix-method}
\alias{rbind2,sparseMatrix,matrix-method}
\alias{rbind2,matrix,sparseMatrix-method}
\alias{rbind2,sparseMatrix,numeric-method}
\alias{rbind2,numeric,sparseMatrix-method}
%
\alias{coerce,ANY,sparseMatrix-method}
\alias{coerce,factor,sparseMatrix-method}
\alias{coerce,sparseMatrix,generalMatrix-method}
\alias{coerce,sparseMatrix,symmetricMatrix-method}
\alias{coerce,sparseMatrix,triangularMatrix-method}
\alias{-,sparseMatrix,missing-method}
\alias{cov2cor,sparseMatrix-method}
\alias{diag,sparseMatrix-method}
\alias{dim<-,sparseMatrix-method}
\alias{lu,sparseMatrix-method}
\alias{mean,sparseMatrix-method}
\alias{print,sparseMatrix-method}
\alias{show,sparseMatrix-method}
\alias{summary,sparseMatrix-method}
\alias{norm,sparseMatrix,character-method}
\alias{determinant,dgCMatrix,logical-method}
\alias{determinant,dsparseMatrix,logical-method}
\alias{determinant,dtCMatrix,logical-method}
\alias{determinant,sparseMatrix,missing-method}
\alias{determinant,sparseMatrix,logical-method}
% "[" are in ./Xtrct-methods.Rd
%\alias{colMeans,..} etc are now in ./colSums.Rd
% graph stuff
\alias{coerce,graph,sparseMatrix-method}
\alias{coerce,graph,CsparseMatrix-method}
\alias{coerce,graphAM,sparseMatrix-method}
\alias{coerce,graphNEL,CsparseMatrix-method}
\alias{coerce,graphNEL,TsparseMatrix-method}
\alias{coerce,sparseMatrix,graph-method}
\alias{coerce,sparseMatrix,graphNEL-method}
\alias{coerce,TsparseMatrix,graphNEL-method}
\alias{coerce,dgTMatrix,graphNEL-method}
%
\description{Virtual Mother Class of All Sparse Matrices}
\section{Slots}{
\describe{
\item{\code{Dim}:}{Object of class \code{"integer"} - the dimensions
of the matrix - must be an integer vector with exactly two
non-negative values.}
\item{\code{Dimnames}:}{a list of length two - inherited from class
\code{Matrix}, see \code{\linkS4class{Matrix}}.}
}
}
\section{Extends}{
Class \code{"Matrix"}, directly.
}
\section{Methods}{
\describe{
\item{show}{\code{(object = "sparseMatrix")}: The
\code{\link{show}} method for sparse matrices prints
\emph{\dQuote{structural}} zeroes as \code{"."} using
\code{\link{printSpMatrix}()} which allows further customization.}
\item{print}{\code{signature(x = "sparseMatrix")}, ....\cr
The \code{\link{print}} method for sparse matrices by default is the
same as \code{show()} but can be called with extra optional
arguments, see \code{\link{printSpMatrix}()}.}
\item{summary}{\code{(object = "sparseMatrix")}: Returns
an object of S3 class \code{"sparseSummary"} which is basically a
\code{\link{data.frame}} with columns \code{(i,j,x)} (or just
\code{(i,j)} for \code{\linkS4class{nsparseMatrix}} class objects)
with the stored (typically non-zero) entries. The
\code{\link{print}} method resembles Matlab's way of printing
sparse matrices, and also the MatrixMarket format, see
\code{\link{writeMM}}.}
\item{determinant}{\code{(x = "sparseMatrix", logarithm=TRUE)}:
\code{\link{determinant}()} methods for sparse matrices typically
work via \code{\link{Cholesky}} or \code{\link{lu}} decompositions.}
\item{diag}{\code{(x = "sparseMatrix")}: extracts the diagonal of a
sparse matrix.}
\item{dim<-}{\code{signature(x = "sparseMatrix", value = "ANY")}:
allows to \emph{reshape} a sparse matrix to a sparse matrix with
the same entries but different dimensions. \code{value} must be of
length two and fulfill \code{prod(value) == prod(dim(x))}.}
\item{coerce}{\code{signature(from = "factor", to = "sparseMatrix")}:
Coercion of a factor to \code{"sparseMatrix"} produces the matrix
of indicator \bold{rows} stored as an object of class
\code{"dgCMatrix"}. To obtain columns representing the interaction
of the factor and a numeric covariate, replace the \code{"x"} slot
of the result by the numeric covariate then take the transpose.
Missing values (\code{\link{NA}}) from the factor are translated
to columns of all \code{0}s.}
}
See also \code{\link{colSums}}, \code{\link{norm}},
... %% FIXME
for methods with separate help pages.
}
\note{
In method selection for multiplication operations (i.e. \code{\%*\%}
and the two-argument form of \code{\link[base]{crossprod}})
the sparseMatrix class takes precedence in the sense that if one
operand is a sparse matrix and the other is any type of dense matrix
then the dense matrix is coerced to a \code{dgeMatrix} and the
appropriate sparse matrix method is used.
}
%\author{Martin}
\examples{
showClass("sparseMatrix") ## and look at the help() of its subclasses
M <- Matrix(0, 10000, 100)
M[1,1] <- M[2,3] <- 3.14
M ## show(.) method suppresses printing of the majority of rows
data(CAex); dim(CAex) # 72 x 72 matrix
determinant(CAex) # works via sparse lu(.)
## factor -> t( <sparse design matrix> ) :
(fact <- gl(5, 3, 30, labels = LETTERS[1:5]))
(Xt <- as(fact, "sparseMatrix")) # indicator rows
## missing values --> all-0 columns:
f.mis <- fact
i.mis <- c(3:5, 17)
is.na(f.mis) <- i.mis
Xt != (X. <- as(f.mis, "sparseMatrix")) # differ only in columns 3:5,17
stopifnot(all(X.[,i.mis] == 0), all(Xt[,-i.mis] == X.[,-i.mis]))
}
\keyword{classes}
|