blob: 1635f1754dbc722c2b45d1c6512a860176fcb843 [file] [log] [blame]
% File src/library/base/man/AsIs.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2014 R Core Team
% Distributed under GPL 2 or later
\name{AsIs}
\alias{I}
\alias{AsIs}
\alias{print.AsIs}
\alias{[.AsIs}
\title{Inhibit Interpretation/Conversion of Objects}
\description{
Change the class of an object to indicate that it should be treated
\sQuote{as is}.
}
\usage{
I(x)
}
\arguments{
\item{x}{an object}
}
\details{
Function \code{I} has two main uses.
\itemize{
\item In function \code{\link{data.frame}}. Protecting an object by
enclosing it in \code{I()} in a call to \code{data.frame} inhibits the
conversion of character vectors to factors and the dropping of
names, and ensures that matrices are inserted as single columns.
\code{I} can also be used to protect objects which are to be
added to a data frame, or converted to a data frame \emph{via}
\code{\link{as.data.frame}}.
It achieves this by prepending the class \code{"AsIs"} to the object's
classes. Class \code{"AsIs"} has a few of its own methods, including
for \code{[}, \code{as.data.frame}, \code{print} and \code{format}.
\item In function \code{\link{formula}}. There it is used to
inhibit the interpretation of operators such as \code{"+"},
\code{"-"}, \code{"*"} and \code{"^"} as formula operators, so they
are used as arithmetical operators. This is interpreted as a symbol
by \code{terms.formula}.
}
}
\value{
A copy of the object with class \code{"AsIs"} prepended to the class(es).
}
\references{
Chambers, J. M. (1992)
\emph{Linear models}.
Chapter 4 of \emph{Statistical Models in S}
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
}
\seealso{
\code{\link{data.frame}}, \code{\link{formula}}
}
\keyword{models}