sparse.model.matrix {Matrix} | R Documentation |
Construct Sparse Design / Model Matrices
Description
Construct a sparse model or “design” matrix,
from a formula and data frame (sparse.model.matrix
) or a single
factor (fac2sparse
).
The fac2[Ss]parse()
functions are utilities, also used
internally in the principal user level function
sparse.model.matrix()
.
Usage
sparse.model.matrix(object, data = environment(object),
contrasts.arg = NULL, xlev = NULL, transpose = FALSE,
drop.unused.levels = FALSE, row.names = TRUE,
sep = "", verbose = FALSE, ...)
fac2sparse(from, to = c("d", "l", "n"),
drop.unused.levels = TRUE, repr = c("C", "R", "T"), giveCsparse)
fac2Sparse(from, to = c("d", "l", "n"),
drop.unused.levels = TRUE, repr = c("C", "R", "T"), giveCsparse,
factorPatt12, contrasts.arg = NULL)
Arguments
object |
an object of an appropriate class. For the default method, a model formula or terms object. |
data |
a data frame created with |
contrasts.arg |
|
xlev |
to be used as argument of |
transpose |
logical indicating if the transpose should be
returned; if the transposed is used anyway, setting |
drop.unused.levels |
should factors have unused levels dropped?
The default for |
row.names |
logical indicating if row names should be used. |
sep |
|
verbose |
logical or integer indicating if (and how much) progress output should be printed. |
... |
further arguments passed to or from other methods. |
from |
(for |
to |
a character indicating the “kind” of sparse matrix to
be returned. The default, |
giveCsparse |
deprecated, replaced with |
repr |
|
factorPatt12 |
logical vector, say |
Value
a sparse matrix, extending CsparseMatrix
(for
fac2sparse()
if repr = "C"
as per default; a
TsparseMatrix
or RsparseMatrix
, otherwise).
For fac2Sparse()
, a list
of length two, both
components with the corresponding transposed model matrix, where the
corresponding factorPatt12
is true.
fac2sparse()
, the basic workhorse of
sparse.model.matrix()
, returns the transpose
(t
) of the model matrix.
Note
model.Matrix(sparse = TRUE)
from package MatrixModels
may be nowadays be preferable to sparse.model.matrix
,
as model.Matrix
returns an object of class modelMatrix
with additional slots assign
and contrasts
relating to
the model variables.
Author(s)
Doug Bates and Martin Maechler, with initial suggestions from Tim Hesterberg.
See Also
model.matrix
in package stats, part of base R.
model.Matrix
in package MatrixModels; see ‘Note’.
as(f, "sparseMatrix")
(see coerce(from = "factor", ..)
in the class doc sparseMatrix) produces the
transposed sparse model matrix for a single factor f
(and no contrasts).
Examples
dd <- data.frame(a = gl(3,4), b = gl(4,1,12))# balanced 2-way
options("contrasts") # the default: "contr.treatment"
sparse.model.matrix(~ a + b, dd)
sparse.model.matrix(~ -1+ a + b, dd)# no intercept --> even sparser
sparse.model.matrix(~ a + b, dd, contrasts = list(a="contr.sum"))
sparse.model.matrix(~ a + b, dd, contrasts = list(b="contr.SAS"))
## Sparse method is equivalent to the traditional one :
stopifnot(all(sparse.model.matrix(~ a + b, dd) ==
Matrix(model.matrix(~ a + b, dd), sparse=TRUE)),
all(sparse.model.matrix(~0 + a + b, dd) ==
Matrix(model.matrix(~0 + a + b, dd), sparse=TRUE)))
(ff <- gl(3,4,, c("X","Y", "Z")))
fac2sparse(ff) # 3 x 12 sparse Matrix of class "dgCMatrix"
##
## X 1 1 1 1 . . . . . . . .
## Y . . . . 1 1 1 1 . . . .
## Z . . . . . . . . 1 1 1 1
## can also be computed via sparse.model.matrix():
f30 <- gl(3,0 )
f12 <- gl(3,0, 12)
stopifnot(
all.equal(t( fac2sparse(ff) ),
sparse.model.matrix(~ 0+ff),
tolerance = 0, check.attributes=FALSE),
is(M <- fac2sparse(f30, drop= TRUE),"CsparseMatrix"), dim(M) == c(0, 0),
is(M <- fac2sparse(f30, drop=FALSE),"CsparseMatrix"), dim(M) == c(3, 0),
is(M <- fac2sparse(f12, drop= TRUE),"CsparseMatrix"), dim(M) == c(0,12),
is(M <- fac2sparse(f12, drop=FALSE),"CsparseMatrix"), dim(M) == c(3,12)
)