Learn R Programming

Matrix (version 0.999375-42)

sparse.model.matrix: Construct Sparse Design / Model Matrices

Description

Construct a Model or Design Matrix

Usage

sparse.model.matrix(object, data = environment(object),
                    contrasts.arg = NULL, xlev = NULL, transpose = FALSE, ...)

Arguments

object
an object of an appropriate class. For the default method, a model formula or terms object.
data
a data frame created with model.frame. If another sort of object, model.frame is called first.
contrasts.arg
A list, whose entries are contrasts suitable for input to the contrasts replacement function and whose names are the names of columns of data containing
xlev
to be used as argument of model.frame if data has no "terms" attribute.
transpose
logical indicating if the transpose should be returned; if the transposed is used anyway, setting transpose = TRUE is more efficient.
...
further arguments passed to or from other methods.

Value

  • a (special) sparse matrix, namely inheriting from class sparseModelMatrix which extends CsparseMatrix.

    Note that such modelMatrix objects have additional slots assign and contrasts which relate back to the variables used.

See Also

model.matrix in standard R's package stats. model.Matrix which calls sparse.model.matrix or model.matrix depending on its sparse argument.

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

Run this code
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)))

Run the code above in your browser using DataLab