Rev 76267 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/stats/man/checkMFClasses.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2019 R Core Team% Distributed under GPL 2 or later\name{.checkMFClasses}\alias{.checkMFClasses}\alias{.MFclass}\alias{.getXlevels}\title{Functions to Check the Type of Variables passed to Model Frames}\description{\code{.checkMFClasses} checks if the variables used in a predictmethod agree in type with those used for fitting.\code{.MFclass} categorizes variables for this purpose.\code{.getXlevels()} extracts factor levels from \code{\link{factor}} or\code{\link{character}} variables.}\usage{.checkMFClasses(cl, m, ordNotOK = FALSE).MFclass(x).getXlevels(Terms, m)}\arguments{\item{cl}{a character vector of class descriptions to match.}\item{m}{a model frame (\code{\link{model.frame}()} result).}\item{x}{any \R object.}\item{ordNotOK}{logical: are ordered factors different?}\item{Terms}{a \code{terms} object (\code{\link{terms.object}}).}}\details{For applications involving \code{\link{model.matrix}()} such as linear modelswe do not need to differentiate between \emph{ordered} factors and factors asalthough these affect the coding, the coding used in the fit isalready recorded and imposed during prediction. However, otherapplications may treat ordered factors differently:\code{\link[rpart]{rpart}} does, for example.}\value{\code{.checkMFClasses()} checks and either signals an error calling\code{\link{stop}()} or returns \code{\link{NULL}} invisibly.\code{.MFclass()} returns a character string, one of \code{"logical"},\code{"ordered"}, \code{"factor"}, \code{"numeric"}, \code{"nmatrix.*"}(a numeric matrix with a number of columns appended) or \code{"other"}.\code{.getXlevels} returns a named \code{\link{list}} of charactervectors, possibly empty, or \code{\link{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 factorsis.null(.getXlevels(terms(x~x), list(x=1)))})}\keyword{utilities}