\Header{ls}{List Objects}
\alias{objects}{ls}
\keyword{environment}{ls}
\begin{Description}\relax
\code{ls} and \code{objects} return a vector of character strings
giving the names of the objects in the specified environment.
When invoked with no argument at the top level prompt,
\code{ls} shows what data sets and functions a user has defined.
When invoked with no argument inside a function,
\code{ls} returns the names of the functions local variables.
This is useful in conjunction with \code{browser}.
\end{Description}
\begin{Usage}
\begin{verbatim}
ls(name, pos = -1, envir = as.environment(pos),
   all.names = FALSE, pattern)
objects(name, pos= -1, envir = as.environment(pos),
        all.names = FALSE, pattern)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{name}] which environment to use in listing the available objects.
Defaults to the \emph{current}
environment.  Although called \code{name} for back compatibility, in
fact this argument can specify the environment in any form; see the
details section.
\item[\code{pos}] An alternative  argument to \code{name} for specifying the
environment as a position in the search list.  Mostly there for
back compatibility.
\item[\code{envir}] an alternative  argument to \code{name} for specifying the
environment evaluation environment. Mostly there for back compatibility.
\item[\code{all.names}] a logical value.  If \code{TRUE}, all
object names are returned.  If \code{FALSE}, names which begin with a
\samp{.} are omitted.
\item[\code{pattern}] an optional \link{regular expression}. Only names
matching \code{pattern} are returned.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The \code{name} argument can specify the  environment from which
object names are taken in one of several forms:
as an integer (the position in the \code{\Link{search}} list); as
the character string name of an element in the search list; or as an
explicit \code{\Link{environment}} (including using
\code{\Link{sys.frame}} to access the currently active function calls).
By default, the environment of the call to \code{ls} or \code{objects}
is used. The \code{pos} and \code{envir} arguments are an alternative
way to specify an environment, but are primarily there for back
compatibility.
\end{Details}
\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{\Link{apropos}} (or \code{\Link{find}})
for finding objects in the whole search path;
\code{\Link{grep}} for more details on \dQuote{regular expressions};
\code{\Link{class}},
\code{\Link{methods}}, etc., for
object-oriented programming.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
.Ob <- 1
ls(pat="O")
ls(pat="O", all = TRUE)    # also shows ".[foo]"

# shows an empty list because inside myfunc no variables are defined
myfunc <- function() {ls()}
myfunc()

# define a local variable inside myfunc
myfunc <- function() {y <- 1; ls()}
myfunc()                # shows "y"
\end{ExampleCode}
\end{Examples}

