\HeaderA{installed.packages}{Find Installed Packages}{installed.packages}
\keyword{utilities}{installed.packages}
\begin{Description}\relax
Find (or retrieve) details of all packages installed in the specified
libraries.
\end{Description}
\begin{Usage}
\begin{verbatim}
installed.packages(lib.loc = NULL, priority = NULL,
                   noCache = FALSE, fields = NULL)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{lib.loc}] character vector describing the location of \R{} library trees to
search through.

\item[\code{priority}] character vector or \code{NULL} (default).  If non-null, used to
select packages; \code{"high"} is equivalent to
\code{c("base", "recommended")}.  To select all packages without an
assigned priority use \code{priority = "NA"}.

\item[\code{noCache}] Do not use cached information.
\item[\code{fields}] a character vector giving the fields to extract from
each package's \code{DESCRIPTION} file in addition to the default
ones, or \code{NULL} (default).  Unavailable fields result in
\code{NA} values.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{installed.packages} scans the \file{DESCRIPTION} files of each
package found along \code{lib.loc} and returns a matrix of package
names, library paths and version numbers.

\strong{Note:} this works with package names, not bundle names, and
for versioned installs with the name under which the package is
installed, in the style \code{mypkg\_1.3-7}.

The information found is cached (by library) for the \R{} session and
specified \code{fields} argument, and updated only if the top-level
library directory has been altered, for example by installing or
removing a package.  If the cached information becomes confused, it
can be refreshed by running \code{installed.packages(noCache =
  TRUE)}.
\end{Details}
\begin{Value}
A matrix with one row per package, row names the package names and
column names \code{"Package"}, \code{"LibPath"}, \code{"Version"},
\code{"Priority"}, \code{"Bundle"}, \code{"Contains"},
\code{"Depends"}, \code{"Suggests"}, \code{"Imports"} and
\code{"Built"} (the \R{} version the package was built under).
Additional columns can be specified using the \code{fields}
argument.
\end{Value}
\begin{SeeAlso}\relax
\code{\LinkA{update.packages}{update.packages}}, \code{\LinkA{INSTALL}{INSTALL}}, \code{\LinkA{REMOVE}{REMOVE}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
str(ip <- installed.packages(priority = "high"))
ip[, c(1,3:5)]
plic <- installed.packages(priority = "high", fields="License")
## what licenses are there:
table( plic[,"License"] )
\end{ExampleCode}
\end{Examples}

