追記:Mac は大文字小文字を区別しないので、このままインストールすると大文字の方のR
と名前がかぶって危険らしいです。READMEによるとmake install
の前に--program-prefix="l"
みたいにすれば別名(この場合はlr
)でインストールできるみたいですが、うまくいくかは未確認です。
Jamiroquaiの名曲と言えばLittle Lですが、我らがR界にはDirkがつくったlittlerというのがあるらしいです。あるらしいです、というかけっこう前からあったけど私が知らなかっただけです。
littler examples: how to use a scripting front-end for GNU R
eddelbuettel/littler · GitHub
A scripting and command-line front-end for GNU R
インストール
(詳しくはlittler: a scripting front-end for GNU Rの「Where?」に書いてあります)
Debian系OSのひと
apt-get
でさくっと入れられます。
# apt-get install littler
最新版がほしいひと or それ以外のLinuxを使っているひと
Githubからソースを落としてきてビルドすれば使えます。
# apt-get install autotools-dev $ git clone https://github.com/eddelbuettel/littler.git $ cd littler $ ./bootstrap # make install
私は最新版のexampleコードを使いたかったので、このやり方でやりました。
Windowsのひと
ビルドできるのか不明。そもそもlittlerはWindows向けではないのであんま期待しない方がよさそう。
使ってみる
Hello World
コマンド名は小文字のr
です。-e
オプションで、文字列をRのスクリプトとして実行してくれます。
$ r -e 'print("Hello World!")' [1] "Hello World!"
シェルのパイプと組み合わせて
これもexamplesに載ってる例ですけど、こんなワンライナーが書けます。
$ ls -l /boot | awk '!/^total/ {print $5}' | r -e "fsizes <- as.integer(readLines(file(\"stdin\"))); print(summary(fsizes)); stem(fsizes)" Min. 1st Qu. Median Mean 3rd Qu. Max. 1024 165700 3387000 5411000 5814000 20140000 The decimal point is 7 digit(s) to the right of the | 0 | 00000111333 0 | 666 1 | 1 | 2 | 000
このreadLines(file(\"stdin\"))
とか長ったらしいけど何とかならないのかな...と思ったら、すぐ下に書いてました。標準入力を簡単に使うための-d
オプションがあるらしいです。
The program can also be shortened like using the new
-d
option which reads from stdin and assigns to adata.frame
namedX
.
なにそれめっちゃ便利...。ということで、上のワンライナーはこんなに短くなります。
ls -l /boot | awk '!/^total/ {print $5}' | r -de "print(summary(X[,1])); stem(X[,1])
これはもう危険シェル芸への応用を期待せずにはいられませんね。わくわく。
その他
SHEBANGにも使えるので、Rでコマンドラインツールがつくれます。オプションとかつけるにはdocopt.Rというのが便利らしいです。
気になること
とはいえ、Rではシェルのパイプとはそれほどうまくやり取りできない気がします。(あんまり詳しくないですけど...)。このへん↓に期待、という感じなんでしょうか。