[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. 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, S+7, 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.

1.1 Why should I use ESS?  
1.2 New features in ESS  
1.3 Authors of and contributors to ESS  
1.4 Getting the latest version of ESS  
1.5 How to read this manual  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Why should I use ESS?

Statistical packages are powerful software systems for manipulating and analyzing data, but their user interfaces often leave something something to be desired: they offer weak editor functionality and they differ among themselves so markedly that you have to re-learn how to do those things for each package. ESS is a package which is designed to make editing and interacting with statistical packages more uniform, user-friendly and give you the power of emacs as well.

ESS provides several features which make it easier to interact with the ESS process (a connection between your buffer and the statistical package which is waiting for you to input commands). 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:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 New features in ESS

Changes/New Features in 5.2.7:

Changes/New Features in 5.2.6:

Changes/New Features in 5.2.5:

Changes/New Features in 5.2.4:

Changes/New Features in 5.2.3:

Changes/New Features in 5.2.2:

Changes/New Features in 5.2.1:

Changes/New Features in 5.2.0:

Changes/New Features in 5.1.24:

Changes/New Features in 5.1.23:

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:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 Authors of and contributors to ESS

The ESS environment is built on the open-source projects of many contributors, dating back nearly 15 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

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 Getting the latest version of ESS

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

The latest development version of ESS is available via https://svn.R-project.org/ESS/, the ESS Subversion repository. If you have a Subversion client (see http://subversion.tigris.org/), you can download the sources using:

% svn checkout https://svn.r-project.org/ESS/trunk path
which will put the ESS files into directory path. Later, within that directory, `svn update' will bring that directory up to date. Windows-based tools such as TortoiseSVN are also available for downloading the files. Alternatively, you can browse the sources with a web browser at: ESS SVN site. However, please use a subversion client instead to minimize the load when retrieving.

If you remove other versions of ESS from your emacs load-path, you can then use the development version by adding the following to .emacs:

(load "/path/to/ess-svn/lisp/ess-site.el") 

Note that https is required, and that the SSL certificate for the Subversion server of the R project is

Certificate information:
 - Hostname: svn.r-project.org
 - Valid: from Jul 16 08:10:01 2004 GMT until Jul 14 08:10:01 2014 GMT
 - Issuer: Department of Mathematics, ETH Zurich, Zurich, Switzerland, CH
 - Fingerprint: c9:5d:eb:f9:f2:56:d1:04:ba:44:61:f8:64:6b:d9:33:3f:93:6e:ad

(currently, there is no "trusted certificate"). You can accept this certificate permanently and will not be asked about it anymore.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 How to read this manual

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

In this manual we use the standard notation for describing the keystrokes used to invoke certain commands. C-<chr> means hold the CONTROL key while typing the character <chr>. M-<chr> means hold the META or EDIT or ALT key down while typing <chr>. If there is no META, EDIT or ALT key, instead press and release the ESC key and then type <chr>.

All ESS commands can be invoked by typing M-x command. Most of the useful commands are bound to keystrokes for ease of use. Also, the most popular commands are also available through the emacs menubar, and finally, if available, a small subset are provided on the toolbar. Where possible, keybindings are similar to other modes in emacs to strive for a consistent user interface within emacs, regardless of the details of which programming language is being edited, or process being run.

Some commands, such as M-x R can accept an optional `prefix' argument. To specify the prefix argument, you would type C-u before giving the command. e.g. If you type C-u M-x R, you will be asked for command line options that you wish to invoke the R process with.

Emacs is often referred to as a `self-documenting' text editor. This applies to ESS in two ways. First, limited documentation about each ESS command can be obtained by typing C-h f. For example, if you type C-h f ess-eval-region, documentation for that command will appear in a separate *Help* buffer. Second, a complete list of keybindings that are available in each ESS mode and brief description of that mode is available by typing C-h m within an ESS buffer.

Emacs is a versatile editor written in both C and lisp; ESS is written in the Emacs lisp dialect (termed `elisp') and thus benefits from the flexible nature of lisp. In particular, many aspects of ESS behaviour can be changed by suitable customization of lisp variables. This manual mentions some of the most frequent variables. A full list of them however is available by using the Custom facility within emacs. (Type M-x customize-group RET ess RET to get started.) A. Customizing ESS provides details of common 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.

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by XEmacs Webmaster on September, 16 2005 using texi2html