| .checkMFClasses {stats} | R Documentation |
.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.
.checkMFClasses(cl, m, ordNotOK = FALSE) .MFclass(x) .getXlevels(Terms, m)
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 |
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.
.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.
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)))
})