sparse.model.matrix {Matrix} | R Documentation |
Construct a sparse model or “design” matrix,
form 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()
.
sparse.model.matrix(object, data = environment(object), contrasts.arg = NULL, xlev = NULL, transpose = FALSE, drop.unused.levels = FALSE, row.names = TRUE, verbose = FALSE, ...) fac2sparse(from, to = c("d", "i", "l", "n", "z"), drop.unused.levels = TRUE, giveCsparse = TRUE) fac2Sparse(from, to = c("d", "i", "l", "n", "z"), drop.unused.levels = TRUE, giveCsparse = TRUE, factorPatt12, contrasts.arg = NULL)
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. |
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 |
(for |
factorPatt12 |
logical vector, say |
a sparse matrix, extending CsparseMatrix
(for
fac2sparse()
if giveCsparse
is true as per default; a
TsparseMatrix
, otherwise).
For fac2Sparse()
, a list
of length two, both
components with the corresponding transposed model matrix, where the
corresponding factorPatt12
is true.
Note that model.Matrix(*, sparse=TRUE)
from package MatrixModels may be often be preferable to
sparse.model.matrix()
nowadays, as model.Matrix()
returns modelMatrix
objects with additional slots assign
and contrasts
which
relate back to the variables used.
fac2sparse()
, the basic workhorse of
sparse.model.matrix()
, returns the transpose
(t
) of the model matrix.
Doug Bates and Martin Maechler, with initial suggestions from Tim Hesterberg.
model.matrix
in standard R's package stats.
model.Matrix
which calls
sparse.model.matrix
or model.matrix
depending on its
sparse
argument may be preferred to sparse.model.matrix
.
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).
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) )