Go to the first, previous, next, last section, table of contents.


Introduction to ESS

The S family (S, Splus and R) and SAS statistical analysis packages provide sophisticated statistical and graphical routines for manipulating data. Emacs Speaks Statistics (ESS) is based on the merger of two pre-cursors, S-mode and SAS-mode, which provided support for the S family and SAS respectively. Later on, Stata-mode was also incorporated.

ESS provides a common, generic, and useful interface, through emacs, to many statistical packages. It currently supports the S family, SAS, BUGS, Stata and XLisp-Stat with the level of support roughly in that order.

A bit of notation before we begin. emacs refers to both GNU Emacs by the Free Software Foundation, as well as XEmacs by the XEmacs Project. The emacs major mode ESS[language], where language can take values such as S, SAS, or XLS. The inferior process interface (the connection between emacs and the running process) referred to as inferior ESS (iESS), is denoted in the modeline by ESS[dialect], where dialect can take values such as S3, S4, S+3, S+4, S+5, S+6, R, XLS, VST, SAS.

Currently, the documentation contains many references to `S' where actually any supported (statistics) language is meant, i.e., `S' could also mean `XLisp-Stat' or `SAS'.

For exclusively interactive users of S, ESS provides a number of features to make life easier. There is an easy to use command history mechanism, including a quick prefix-search history. To reduce typing, command-line completion is provided for all S objects and "hot keys" are provided for common S function calls. Help files are easily accessible, and a paging mechanism is provided to view them. Finally, an incidental (but very useful) side-effect of ESS is that a transcript of your session is kept for later saving or editing.

No special knowledge of Emacs is necessary when using S interactively under ESS.

For those that use S in the typical edit--test--revise cycle when programming S functions, ESS provides for editing of S functions in Emacs edit buffers. Unlike the typical use of S where the editor is restarted every time an object is edited, ESS uses the current Emacs session for editing. In practical terms, this means that you can edit more than one function at once, and that the ESS process is still available for use while editing. Error checking is performed on functions loaded back into S, and a mechanism to jump directly to the error is provided. ESS also provides for maintaining text versions of your S functions in specified source directories.

Why should I use ESS?

S is a powerful system for manipulating and analyzing data, but its user interface -- particularly on Unix platforms -- leaves something to be desired. ESS is a package which is designed to make S easier to use.

ESS provides several features which make it easier to interact with the ESS process (i.e. enter commands and view the output). These include:

If you commonly create or modify S functions, you will have found the standard facilities for this (the `fix()' function, for example) severely limiting. Using S's standard features, one can only edit one function at a time, and you can't continue to use S while editing. ESS corrects these problems by introducing the following features:

Finally, ESS provides features for re-submitting commands from saved transcript files, including:

New features in ESS

Changes/New Features in 5.1.22:

Changes/New Features in 5.1.21:

Changes/New Features in 5.1.20:

Changes/New Features in 5.1.19:

Changes/New Features in 5.1.18:

Changes/New Features in 5.1.17:

Changes/New Features in 5.1.16:

Changes/New Features in 5.1.15:

Changes/New Features in 5.1.14:

Changes/New Features in 5.1.13:

Changes/New Features in 5.1.12:

Changes/New Features in 5.1.11:

Changes/New Features in 5.1.10:

Changes/New Features in 5.1.9:

Changes/New Features in 5.1.8:

Changes/New Features in 5.1.2:

Authors of and contributors to ESS

The ESS environment is built on the open-source projects of many contributors, dating back over 10 years. Doug Bates and Ed Kademan wrote S-mode in 1989 to edit S and Splus files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided process interaction based on Olin Shivers' comint package.

John Sall wrote GNU Emacs macros for SAS source code around 1990. Tom Cook added more functionality creating SAS-mode which was distributed in 1994. Also in 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin Maechler, this became version 4.7 and supported S, Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs.

In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5.

ESS version 5 is being developed and currently maintained by

Getting the latest version of ESS

The latest stable version of ESS is always available on the web at: ESS web page or StatLib

The latest public version of ESS can also be retrieved via cvs client. If you have a firewall, then you may need to take appropriate action.

The repository name is

:pserver:anoncvs@software.biostat.washington.edu:/var/anoncvs

Using a command-line cvs client (i.e. on Unix or DOS), first type:

cvs -d :pserver:anoncvs@software.biostat.washington.edu:/var/anoncvs login

The password is "anoncvs".

Then type:

cvs -d :pserver:anoncvs@software.biostat.washington.edu:/var/anoncvs co ess

How to read this manual

If you need to install ESS, read section Installing ESS on your system for details on what needs to be done before proceeding to the next chapter.

section Customizing ESS provides details of user variables you can change to customize ESS to your taste, but it is recommended that you defer this section until you are more familiar with ESS.

Don't forget that this manual is not the only source of information about ESS. In particular, the mode-based online help (obtained by pressing C-h m when in the process buffer, edit buffer or help buffer) is quite useful. However the best source of information is, as always, experience -- try it out!


Go to the first, previous, next, last section, table of contents.