\Header{exists}{Is a Variable Defined?}
\keyword{data}{exists}
\begin{Usage}
\begin{verbatim}
exists(x, where =NULL, envir=sys.frame(sys.parent()), frame =NULL,
       mode = "any", inherits = TRUE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\texttt{x}] a variable name (given as a quoted string).
\item[\texttt{where, envir, frame}] an environment to be searched.
By default this is the
environment where the call to \texttt{envir} takes place.
\item[\texttt{mode}] the type of interest for the object.
\item[\texttt{inherits}] should the enclosing frames of the environment be inspected.
\end{ldescription}
\end{Arguments}
\begin{Description}
This function looks to see if the name \texttt{x} has a value bound to it.
If \texttt{inherits} is \texttt{TRUE} and a value is not found for \texttt{x},
then the parent frames of \texttt{envir} are searched until the name
\texttt{x} is encountered. \bold{Warning:} This is the default behaviour
for \R\ but not for S.

If \texttt{mode} is specified then only objects of that mode are sought.
The function returns \texttt{TRUE} if the variable is encountered and
\texttt{FALSE} if not.\end{Description}
\begin{SeeAlso}
\texttt{\Link{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=F) # false
\end{ExampleCode}
\end{Examples}

