blob: ae0ff74c42c4b23277442fbd38ce5fe91b17c3dc [file] [log] [blame]
% File src/library/base/man/autoload.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2007 R Core Team
% Distributed under GPL 2 or later
\name{autoload}
\title{On-demand Loading of Packages}
\usage{
autoload(name, package, reset = FALSE, \dots)
autoloader(name, package, \dots)
.AutoloadEnv
.Autoloaded
}
\alias{autoload}
\alias{autoloader}
\alias{.AutoloadEnv}
\alias{.Autoloaded}
\alias{Autoloads}
\arguments{
\item{name}{string giving the name of an object.}
\item{package}{string giving the name of a package containing the object.}
\item{reset}{logical: for internal use by \code{autoloader}.}
\item{\dots}{other arguments to \code{\link{library}}.}
}
\description{
\code{autoload} creates a promise-to-evaluate \code{autoloader} and
stores it with name \code{name} in \code{.AutoloadEnv} environment.
When \R attempts to evaluate \code{name}, \code{autoloader} is run,
the package is loaded and \code{name} is re-evaluated in the new
package's environment. The result is that \R behaves as if
\code{package} was loaded but it does not occupy memory.
\code{.Autoloaded} contains the names of the packages for
which autoloading has been promised.
}
\value{
This function is invoked for its side-effect. It has no return value.
}
\seealso{
\code{\link{delayedAssign}}, \code{\link{library}}
}
\examples{
require(stats)
autoload("interpSpline", "splines")
search()
ls("Autoloads")
.Autoloaded
x <- sort(stats::rnorm(12))
y <- x^2
is <- interpSpline(x, y)
search() ## now has splines
detach("package:splines")
search()
is2 <- interpSpline(x, y+x)
search() ## and again
detach("package:splines")
}
\keyword{data}
\keyword{programming}