\HeaderA{apropos}{Find Objects by (Partial) Name}{apropos}
\aliasA{find}{apropos}{find}
\keyword{data}{apropos}
\keyword{documentation}{apropos}
\keyword{environment}{apropos}
\begin{Description}\relax
\code{apropos()} returns a character vector giving the names of
all objects in the search list matching \code{what}.

\code{find()} is a different user interface to the same task.
\end{Description}
\begin{Usage}
\begin{verbatim}
apropos(what, where = FALSE, ignore.case = TRUE, mode = "any")

find(what, mode = "any", numeric = FALSE, simple.words = TRUE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{what}] character string with name of an object, or more generally
a \LinkA{regular expression}{regular expression} to match against.
\item[\code{where, numeric}] a logical indicating whether positions in the
search list should also be returned
\item[\code{ignore.case}] logical indicating if the search should be
case-insensitive, \code{TRUE} by default.  Note that in \R{} versions
prior to 2.5.0, the default was implicitly \code{ignore.case = FALSE}.
\item[\code{mode}] character; if not \code{"any"}, only objects whose
\code{\LinkA{mode}{mode}} equals \code{mode} are searched.
\item[\code{simple.words}] logical; if \code{TRUE}, the \code{what} argument is
only searched as whole word.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If \code{mode != "any"} only those objects which are of mode \code{mode}
are considered.
If \code{where} is \code{TRUE}, the positions in the search list are
returned as the names attribute.

\code{find} is a different user interface for the same task as
\code{apropos}. However, by default (\code{simple.words == TRUE}),
only full words are searched with \code{grep(fixed = TRUE)}.

Note that in \R{} versions prior to 2.5.0, \code{what} was allowed to be
non-character, such that \code{find(cor)} worked as it does in S.
This possibility has been dropped in line with the aim of minimizing
all use of non-standard evaluation in \R.
\end{Details}
\begin{Value}
For \code{apropos} character vector, sorted by name, possibly with
names giving the (numerical) positions on the search path.

For \code{find}, either a character vector of environment names, or for
\code{numeric = TRUE}, a numerical vector of positions on the search path,
with names giving the names of the corresponding environments.
\end{Value}
\begin{Author}\relax
Kurt Hornik and Martin Maechler (May 1997).
\end{Author}
\begin{SeeAlso}\relax
\code{\LinkA{glob2rx}{glob2rx}} to convert wildcard patterns to regular expressions.

\code{\LinkA{objects}{objects}} for listing objects from one place,
\code{\LinkA{help.search}{help.search}} for searching the help system,
\code{\LinkA{search}{search}} for the search path.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
require(stats)

## Not run: apropos("lm")
apropos("GLM")                      # more than a dozen
## that may include internal objects starting '.__C__' if
## methods is attached
apropos("GLM", ignore.case = FALSE) # not one
apropos("lq")

cor <- 1:pi
find("cor")        #> ".GlobalEnv"   "package:stats"
find("cor", numeric=TRUE) # numbers with these names
find("cor", numeric=TRUE, mode="function")# only the second one
rm(cor)

## Not run: apropos(".", mode="list") # a long list

# need a DOUBLE backslash '\\' (in case you don't see it anymore)
apropos("\\[")

## Not run: # everything 
length(apropos("."))

# those starting with 'pr'
apropos("^pr")

# the 1-letter things
apropos("^.$")
# the 1-2-letter things
apropos("^..?$")
# the 2-to-4 letter things
apropos("^.{2,4}$")

# the 8-and-more letter things
apropos("^.{8,}$")
table(nchar(apropos("^.{8,}$")))
## End(Not run)\end{ExampleCode}
\end{Examples}

