|
|
littler: a scripting front-end for GNU R | |||||
|
Bio Code rcpp rinside rquantlib rpostgresql rprotobuf rvowpalwabbit rdieharder littler random digest beancounter smtm yahooquote octave-mt octave-pg Papers Talks Linux Quantian About Blog
|
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, $ echo 'cat(pi^2,"\n")' | r 9.869604Equivalently, commands that are to be evaluated can be given on the command-line $ r -e 'cat(pi^2, "\n")' 9.869604But 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 fromsvn co http://littler.googlecode.com/svn/trunk/ littlerIt can also be obtained from Debian mirrors via a simple $ apt-get install littlerprovided apt is pointed to the testing or unstable distributions. littler is known to build and run on Linux and OS X. What elseA 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 Eddelbuettellittler 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. |
|||||