Dirk Eddelbuettel littler: a scripting front-end for GNU R
 

What ?

littler provides hash-bang (i.e. script starting with #!/some/path) capability for GNU R, as well as simple command-line and piping use.

Why ?

GNU R, a language and environment for statistical computing and graphics, provides a wonderful system for 'programming with data' as well as interactive exploratory analysis, often involving graphs.

Sometimes, however, simple scripts are desired. While R can be used in batch mode, and while so-called 'here' documents can be crafted, a long-standing need for a scripting front-end has often been expressed by the R Community.

littler (pronounced 'little R' and written 'r') aims to fill this need.

It can be used directly on the command-line just like, say, bc(1):

	$ echo 'cat(pi^2,"\n")' | r
	9.869604
Equivalently, commands that are to be evaluated can be given on the command-line
	$ r -e 'cat(pi^2, "\n")'
	9.869604
But unlike bc(1), GNU R has a vast number of statistical functions. For example, we can quickly compute a summary() and show a stem-and-leaf plot for file sizes in a given directory via
	$ ls -l /boot | awk '!/^total/ {print $5}' | \
		 r -e "fsizes <- as.integer(readLines()); \
			print(summary(fsizes)); stem(fsizes)"
	   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
	     13     512  110100  486900  768400 4735000
	Loading required package: grDevices

	  The decimal point is 6 digit(s) to the right of the |

	  0 | 00000000000000000011112223
	  0 | 5557778899
	  1 | 112233
	  1 | 5
	  2 |
	  2 |
	  3 |
	  3 |
	  4 |
	  4 | 7
And, last but not least, this (somewhat unwieldy) expression can be stored in a helper script:
	$ cat examples/fsizes.r
	#!/usr/bin/env r

	fsizes <- as.integer(readLines())
	print(summary(fsizes))
	stem(fsizes)
(where calling #!/usr/bin/env is a trick from Python which allows one to forget whether r is installed in /usr/bin/r, /usr/local/bin/r, ~/bin/r, ...)

A few examples are provided in the source directories examples/ and tests/.

Several projects use littler in an industrial-strength setting. CRANberries has been using it since July 2007 to provide detailed and immediate updates about new and updated packages at CRAN via RSS feeds and HTML pages. Similarly, cran2deb uses it for fully-automated generation of thousands of binary packages (in i386 and amd64 'flavours') for the Debian Linux distribution.

Where ?

littler can be downloaded from the local archive here or accessed via SVN from
	svn co http://littler.googlecode.com/svn/trunk/ littler
It can also be obtained from Debian mirrors via a simple
	$ apt-get install littler
provided apt is pointed to the testing or unstable distributions. littler is known to build and run on Linux and OS X.

What else

A few more questions are addressed in the README file which also contains a brief FAQ section.

Who ?

Copyright (C) 2006 - 2011 Jeffrey Horner and Dirk Eddelbuettel

littler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Comments are welcome, as are are suggestions, bug fixes, or patches.

- Jeffrey Horner
- Dirk Eddelbuettel

Last modified: Thu Jul 14 18:51:34 CDT 2011