R is a programming language, and the name of a software system which implements this language. The R programming language has been developed for statistics and stochastic simulation. By now, it has become a standard in these fields. To be precise, we should use specific terms: the language is called S, its implementation and the environment are called R. The original authors of S are John M. Chambers, R. A. Becker and A. R. Wilks, AT & T Bell Laboratories, Statistics Research Department. The language and its development are documented in a series of books, commonly called by their cover as white, blue and green book.
For a long time the AT & T implementation of S has been the reference for the S language. Today, S is available in a commercial version called S-Plus <http://www.insightful.com/> (based on the AT & T implementation) and as a free software version R , or "Gnu S" <http://www.r-project.org/>.
In the meantime, R has become the reference implementation. Essential precisations and - if necessary - even modifications of the language are defined by R. For simplicity, here and in the sequel we use "R language" as a common term even where the precise term should be: the S language using the R implementation.
R is an interpreted programming language. Instructions in R are executed immediately. Besides the original elements of S, R has several extensions. Some of these are introduced in response to recent developments in statistics, some are introduced to open experimental facilities. On the other side, advancements of the S language are taken into account.
The recent (2008) version of R is 2.x. This version is largely compatible with the previous version R 1.x. The essential changes are internal to the system. For initial use, there is no significant difference from R 1.x. For the advanced user, there are three essential innovations:
Two aspects of R are active areas of recent developments: interactive access, and integration in a networked environment. These and other aspects are part of Omegahat - an attempt to develop a next generation system based on the experiences from R . This more experimental project is accessible at <http://www.omegahat.org/>. R does already provide simple possibilities to call functions implemented in other languages like C or FORTRAN. Omegahat extends these possibilities and allows direct access to Java, Perl. A Java based graphical interface for R is JGR, accessible at <http://stats.math.uni-augsburg.de/software/>. A collection of interactive displays for R is in iplots, available at the same site.
Recent developments related to R are in <http://r-forge.r-project.org/>. Many helpful extensions are in <http://www.bioconductor.org/>, a site which is targeted at biocomputing.
R has been developed for practical work in statistics. Usability often has been given priority over abstract design principles. As a consequence, it is not easy to give a systematic introduction to R. A winding path is chosen here instead: case studies and examples, followed by systematic surveys. Practical work should make use of the rich online material which comes with R. Starting points are the "frequently asked questions" (FAQ) <http://www.cran.r-project.org/faqs.html>. "An Introduction to R" is the "official" introduction. This documentation and other manuals can be downloaded from <http://www.cran.r-project.org/manuals.html>.
R comes with an extensive online help system providing function descriptions and examples. Once you have become familiar with R, the online help and manuals will become first source of information. For off-line reference, we include some examples of information provided by the help system, with kind permission of The R Foundation for Statistical Computing.
Many R functions are included in the basic system. Other functions must be loaded from libraries. Some of these libraries are distributed with the R system. If additional packages are needed, <http://www.cran.r-project.org/> is a first source for downloads, and <http://r-forge.r-project.org/> for current projects.
The commercial S-Plus is available in various versions. S-Plus and S-Plus 2000 use S version 3 and are largely compatible with R. S-Plus 5 is an implementation of S version 4 with some changes which need attention. These programming details of S-Plus are not discussed here. Information about S-Plus is at <http://www.insightful.com/>.