\HeaderA{exists}{Is an Object Defined?}{exists}
\keyword{data}{exists}
\begin{Description}\relax
Look for an \R{} object of the given name.
\end{Description}
\begin{Usage}
\begin{verbatim}
exists(x, where = -1, envir = , frame, mode = "any",
       inherits = TRUE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a variable name (given as a character string).
\item[\code{where}] where to look for the object (see the details section); if
omitted, the function will search as if the name of the object
appeared unquoted in an expression.
\item[\code{envir}] an alternative way to specify an environment to look in,
but it is usually simpler to just use the \code{where} argument.
\item[\code{frame}] a frame in the calling list.  Equivalent to giving
\code{where} as \code{sys.frame(frame)}.
\item[\code{mode}] the mode or type of object sought: see the Details section.
\item[\code{inherits}] should the enclosing frames of the environment be
searched?
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The \code{where} argument can specify the environment in which to look
for the object in any of several ways: as an integer (the position in
the \code{\LinkA{search}{search}} list); as the character string name of an
element in the search list; or as an \code{\LinkA{environment}{environment}}
(including using \code{\LinkA{sys.frame}{sys.frame}} to access the currently active
function calls).  The \code{envir} argument is an alternative way to
specify an environment, but is primarily there for back compatibility.

This function looks to see if the name \code{x} has a value bound to
it in the specified environment. If \code{inherits} is \code{TRUE} and
a value is not found for \code{x} in the specified environment, the
enclosing frames of the environment are searched until the name \code{x}
is encountered.  See \code{\LinkA{environment}{environment}} and the \sQuote{R
Language Definition} manual for details about the structure of
environments and their enclosures.

\bold{Warning:}
\code{inherits = TRUE} is the default behaviour for \R{} but not for S.

If \code{mode} is specified then only objects of that type are sought.
The \code{mode} may specify one of the collections \code{"numeric"} and
\code{"function"} (see \code{\LinkA{mode}{mode}}): any member of the
collection will suffice.  (This is true even if a member of a
collection is specified, so for example \code{mode="special"} will
seek any type of function.)
\end{Details}
\begin{Value}
Logical, true if and only if an object of the correct name and mode is
found.
\end{Value}
\begin{References}\relax
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth \& Brooks/Cole.
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{get}{get}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
##  Define a substitute function if necessary:
if(!exists("some.fun", mode="function"))
  some.fun <- function(x) { cat("some.fun(x)\n"); x }
search()
exists("ls", 2) # true even though ls is in pos=3
exists("ls", 2, inherits = FALSE) # false
\end{ExampleCode}
\end{Examples}

