sparse.model.matrix {Matrix}  R Documentation 
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()
.
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)
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 
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.
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 2way
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)
)