% File src/library/utils/man/demo.Rd
% Part of the R package, http://www.R-project.org
% Copyright 1995-2009 R Core Development Team
% Distributed under GPL 2 or later

\name{demo}
\alias{demo}
\title{Demonstrations of R Functionality}
\description{
  \code{demo} is a user-friendly interface to running some demonstration
  \R scripts.  \code{demo()} gives the list of available topics.
}
\usage{
demo(topic, package = NULL, lib.loc = NULL,
     character.only = FALSE, verbose = getOption("verbose"),
     echo = TRUE, ask = getOption("demo.ask"))
}
\arguments{
  \item{topic}{the topic which should be demonstrated, given as a
    \link{name} or literal character string, or a character string,
    depending on whether \code{character.only} is \code{FALSE} (default)
    or \code{TRUE}.  If omitted, the list of available topics is
    displayed.}
  \item{package}{a character vector giving the packages to look into for
    demos, or \code{NULL}.  By default, all packages in the search path
    are used.}
  \item{lib.loc}{a character vector of directory names of \R libraries,
    or \code{NULL}.  The default value of \code{NULL} corresponds to all
    libraries currently known.  If the default is used, the loaded
    packages are searched before the libraries.}
  \item{character.only}{logical; if \code{TRUE}, use \code{topic} as
    character string.}
  \item{verbose}{a logical.  If \code{TRUE}, additional diagnostics are
    printed.}
  \item{echo}{a logical.  If \code{TRUE}, show the \R input when sourcing.}
    \item{ask}{a logical (or \code{"default"}) indicating if
    \code{\link{devAskNewPage}(ask=TRUE)} should be called before
    graphical output happens from the demo code.  The value
    \code{"default"} (the factory-fresh default) means to ask if
    \code{echo == TRUE} and the graphics device appears to be
    interactive.  This parameter applies both to any currently opened
    device and to any devices opened by the demo code.}
}
\details{
  If no topics are given, \code{demo} lists the available demos.  The
  corresponding information is returned in an object of class
  \code{"packageIQR"}.  The structure of this class is experimental.  In
  earlier versions of R, an empty character vector was returned along
  with listing available demos.
}
\seealso{
  \code{\link{source}} and \code{\link{devAskNewPage}} which 
are called by \code{demo}.
}

\examples{
demo() # for attached packages

## All available demos:
demo(package = .packages(all.available = TRUE))

## Display a demo, pausing between pages
demo(lm.glm, package="stats", ask=TRUE)

## Display it without pausing
demo(lm.glm, package="stats", ask=FALSE)

\dontrun{
 ch <- "scoping"
 demo(ch, character = TRUE)
}

## Find the location of a demo
system.file("demo", "lm.glm.R", package="stats")
}
\keyword{documentation}
\keyword{utilities}
