blob: 29b7f1c44497e5104e2ed4129edf09883372feba [file] [log] [blame]
% File src/library/base/man/levels.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2015 R Core Team
% Distributed under GPL 2 or later
\name{levels}
\alias{levels}
\alias{levels.default}
\alias{levels<-}
\alias{levels<-.factor}
\title{Levels Attributes}
\description{
\code{levels} provides access to the levels attribute of a variable.
The first form returns the value of the levels of its argument
and the second sets the attribute.
}
\usage{
levels(x)
levels(x) <- value
}
\arguments{
\item{x}{an object, for example a factor.}
\item{value}{A valid value for \code{levels(x)}.
For the default method, \code{NULL} or a character vector. For the
\code{factor} method, a vector of character strings with length at
least the number of levels of \code{x}, or a named list specifying how to
rename the levels.}
}
\details{
Both the extractor and replacement forms are generic and new methods
can be written for them. The most important method for the replacement
function is that for \code{\link{factor}}s.
For the factor replacement method, a \code{NA} in \code{value}
causes that level to be removed from the levels and the elements
formerly with that level to be replaced by \code{NA}.
Note that for a factor, replacing the levels via
\code{levels(x) <- value} is not the same as (and is preferred to)
\code{attr(x, "levels") <- value}.
The replacement function is \link{primitive}.
}
\references{
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth & Brooks/Cole.
}
\seealso{
\code{\link{nlevels}}, \code{\link{relevel}}, \code{\link{reorder}}.
}
\examples{
## assign individual levels
x <- gl(2, 4, 8)
levels(x)[1] <- "low"
levels(x)[2] <- "high"
x
## or as a group
y <- gl(2, 4, 8)
levels(y) <- c("low", "high")
y
## combine some levels
z <- gl(3, 2, 12, labels = c("apple", "salad", "orange"))
z
levels(z) <- c("fruit", "veg", "fruit")
z
## same, using a named list
z <- gl(3, 2, 12, labels = c("apple", "salad", "orange"))
z
levels(z) <- list("fruit" = c("apple","orange"),
"veg" = "salad")
z
## we can add levels this way:
f <- factor(c("a","b"))
levels(f) <- c("c", "a", "b")
f
f <- factor(c("a","b"))
levels(f) <- list(C = "C", A = "a", B = "b")
f
}
\keyword{category}