/interface/
R is a language which bears a passing resemblance to the S language
developed at AT&T Bell Laboratories.  It provides support for a variety
of statistical and graphical analyses.  R is a true computer language
which contains a number of control-flow constructions for iteration and
alternation.  It allows users to add additional functionality by
defining new functions.
.LP
On systems which have the GNU \fBreadline\fP(3) library, R will maintain
a command history, so that commands can be recalled, edited and
re-executed.

[OPTIONS]

Most options control what happens at the beginning and at the end of an
R session, in particular which files are being read and written, and how
much memory is reserved for the R process.

[SEE ALSO]

The full documentation for R is provided by a collection of Texinfo
manuals and individual help for R objects which is also available
on-line.
.LP
Start R and type \fB?\fP\fItopic\fP at the R prompt to obtain on-line
information for `\fItopic\fP'.
.LP
If the processed manuals have been installed they will be available as
DVI and/or PDF files in the doc/manual subdirectory of the documentation
directory tree (default `R RHOME`).
.LP
If the \fBinfo\fP program and the R manuals are installed on your
system, typing 
\fBinfo -f R-intro\fP,
\fBinfo -f R-data\fP, 
\fBinfo -f R-exts\fP,
\fBinfo -f R-FAQ\fP, 
\fBinfo -f R-lang\fP and
\fBinfo -f R-ints\fP
should give you access to
``An Introduction to R''
(the basic manual),
the ``R Data Import/Export'' Guide, the ``R Extension Writer's Guide'',
the ``R FAQ'', the ``The R Language Definition'', and the ``R Internals''.
