Programming with Data
A Guide to the S Language

This book is a guide and reference to the version of S underlying S-Plus Versions 5.0 and later (not directly useful if you are programming with versions 3.x, 4.x, or 2000 of S-Plus). The book is published by Springer-Verlag. The ISBN is 0-387-98503-4 and the publication date 1998.

If you don't have the book and are interested, you can look at the preface and contents in postscript. An earlier article from the 1996 Interface Conference gives some underlying design goals for the revisions in S. It is a little out of date (especially in not discussing the use of SGML as a model for the online documentation), but covers the general philosophy of the language.

This web site provides a focus for extensions, details and errata. The material either surfaced after the book was published or else carries the discussion beyond the scope of the book. There are also pointers to other topics related to S and the book, but not directly part of the language.

If you're new to S/S-Plus, or just want some background information, click here.

Detailed Discussions

The following pages extend the discussion of topics in the book to newer material and/or to details that just didn't make the cutoff.
 o Method Dispatch
Variations on choosing and invoking a method.
 o Database Classes & More on Databases
make most anything into an S database, plus some other hints.
 o Committing Assignments
Details on how it works, and on options("immediate").
 o Objects in an Old-Style Method
If the old-style generic modifies objects before calling UseMethod, what happens?
 o Lazy Evaluation and Missing Arguments
Some details on when arguments are really evaluated, and what happens if they're missing.
 o Versions of Classes and Generic Functions
New tools to detect, and avoid, inconsistent definitions of classes and generic functions.
 o Loading C Code & Libraries
A few tricks and traps in attaching chapters.
 o More on Programming the S evaluator in C
Details, and a few new tools, to use the evaluator more safely from C/C++.
 o Using Old-Style Methods for the plot Function
Details, and a few new tools, to use the evaluator more safely from C/C++.


The book describes the essentials of S programming to use and produce online documentation for functions, classes and methods. The S documentation objects map into the SGML language, opening up many opportunities for working with the documentation using, for example, XML tools.
 o The S Documentation System
 o Overview
 o SGML tags for S

Known Errors in the Book