.checkMFClasses {stats} | R Documentation |
Functions to Check the Type of Variables passed to Model Frames
Description
.checkMFClasses
checks if the variables used in a predict
method agree in type with those used for fitting.
.MFclass
categorizes variables for this purpose.
.getXlevels()
extracts factor levels from factor
or
character
variables.
Usage
.checkMFClasses(cl, m, ordNotOK = FALSE)
.MFclass(x)
.getXlevels(Terms, m)
Arguments
cl |
a character vector of class descriptions to match. |
m |
a model frame ( |
x |
any R object. |
ordNotOK |
logical: are ordered factors different? |
Terms |
a |
Details
For applications involving model.matrix()
such as linear models
we do not need to differentiate between ordered factors and factors as
although these affect the coding, the coding used in the fit is
already recorded and imposed during prediction. However, other
applications may treat ordered factors differently:
rpart
does, for example.
Value
.checkMFClasses()
checks and either signals an error calling
stop()
or returns NULL
invisibly.
.MFclass()
returns a character string, one of "logical"
,
"ordered"
, "factor"
, "numeric"
, "nmatrix.*"
(a numeric matrix with a number of columns appended) or "other"
.
.getXlevels
returns a named list
of character
vectors, possibly empty, or NULL
.
Examples
sapply(warpbreaks, .MFclass) # "numeric" plus 2 x "factor"
sapply(iris, .MFclass) # 4 x "numeric" plus "factor"
mf <- model.frame(Sepal.Width ~ Species, iris)
mc <- model.frame(Sepal.Width ~ Sepal.Length, iris)
.checkMFClasses("numeric", mc) # nothing else
.checkMFClasses(c("numeric", "factor"), mf)
## simple .getXlevels() cases :
(xl <- .getXlevels(terms(mf), mf)) # a list with one entry " $ Species" with 3 levels:
stopifnot(exprs = {
identical(xl$Species, levels(iris$Species))
identical(.getXlevels(terms(mc), mc), xl[0]) # a empty named list, as no factors
is.null(.getXlevels(terms(x~x), list(x=1)))
})