fortunes パッケージでRに関する名言を楽しもう

概要
Rの fortunes パッケージには、Rに関するさまざまな名言が収録されている。Rを起動するたびに、こうした名言を表示することも可能である。

fortunes パッケージとは

R には fortunes というパッケージがある。これは、Rに関するさまざまな名言を収録したパッケージで、CRAN から手に入れることができる。

このパッケージに載っている名言の例をいくつか紹介しよう。

I think that it’s generally a good idea not to resist the most natural way of programming in R.
(訳:Rでの一番自然なプログラミングのやり方に逆らわないことが、一般的には良い考えだと思うんだ。)
John Fox. R-help (March 2004)
Please don’t apply R like a magic answers box, because you can mislead others and cause harm.
(訳:魔法で答える箱のようにRを使わないでくれませんか。他の人を惑わして、被害を引き起こす可能性がありますから。)
Jeff Newmiller (about how much statistical knowledge is needed for using R). R-help (May 2016)
Most optimization problems have more than one answer, and the “wrong” ones often seem to be easier to find.
(訳:ほとんどの最適化問題は2つ以上の答えがある。そして、往々にして「間違っている」方が見つけやすいようなんだ。)
John C. Nash (about nonlinear optimization problems). R-help (April 2013)
As for elegance, R is refined, tasteful, and beautiful. When I grow up, I want to marry R.
(訳:エレガンスさについて言えば、Rは洗練されていて、品が良く、見事なものなんだ。大きくなったら、Rと結婚したい。)
Andy Bunn (in a discussion about whether R is simple, powerful and elegant). R-help (May 2005)

名言と呼ぶよりも迷言と呼んだ方がよいものも含まれている気がするが、それもまた一興。

なお、このパッケージに収録されている名言の一覧は、fortunesパッケージの vignettes に載っている。2016年12月29日に出たバージョン 1.5-4 では386件の名言が載っている。

fortunes パッケージの基本的な使い方

インストール

fortunes パッケージは、CRAN から提供されているので、Rのコンソールから install.packages("fortunes") とコマンドを入れればインストールすることができる。パッケージ名は fortunes と複数形になっていることに注意。単数形の fortune ではない。

名言を表示する

fortunes パッケージを読みこんだ後に、fortune() というコマンドを入れることで、名言を1つ表示することができる。

library("fortunes")
fortune()
#
# As for elegance, R is refined, tasteful, and beautiful. When I grow up, I want to marry R.
#    -- Andy Bunn (in a discussion about whether R is simple, powerful and elegant)
#       R-help (May 2005)

パッケージ名は fortunes と複数形になっているが、名言を表示するためのコマンドの方は、単数形で fortune となる。間違えないように気を付けよう。

なお、引数として文字列を与えると、その文字列を含む名言が1つ表示される [1] 。例えば、fortune("SAS") で SAS を含む名言が1つ表示される。

Rのコンソール起動時に名言を表示する

Rのコンソール起動時に必ず名言を表示することも可能である。

R がインストールされているディレクトリの中の etc/Rprofile.site に以下のような記述がある。

# Give a fortune cookie, but only to interactive sessions
# (This would need the fortunes package to be installed.)
#  if (interactive())
#    fortunes::fortune()

ここの部分の後半の2行のコメントアウトを解除して、以下のようにする。

# Give a fortune cookie, but only to interactive sessions
# (This would need the fortunes package to be installed.)
  if (interactive())
    fortunes::fortune()

すると、R のコンソールを立ち上げるときに、以下のように fortunes パッケージからの名言が表示されるようになる。

Rのコンソール画面にランダムで名言が表示されるようになる。(Apparently から始まる英語の部分が名言である。)
Rのコンソール画面にランダムで名言が表示されるようになる。(Apparently から始まる英語の部分が名言である。)

ここでは、etc/Rprofile.site の中身を書き換えたが、別にここでなくても、Rが起動時に読みにいく .Rprofile ファイルのたぐいに書いておけば同じことが達成できる。

なぜ fortunes というのか

ところで、なぜ名言を表示するパッケージに fortunes という名前がついているのだろうか。

フォーチュン・クッキー
フォーチュン・クッキー [2]

北米の中華料理店では、フォーチュン・クッキー (fortune cookie) という菓子が出されることがある。この菓子の中には、紙片が入っていて、その紙片に占いの結果や名言などが書かれている。

このフォーチュン・クッキーにちなんだ Unix のコマンドとして fortune というものがある。これは、さまざまな名言を表示するためのコマンドだ。おそらく、この Unix の fortune からの連想で、Rにも fortunes というパッケージが作られたのだろう。

脚注
  1. 厳密に言うと、引数の文字列で grep したときにマッチする名言が1つ表示される []
  2. Pixabay より pixel2013 氏のパブリックドメイン画像を使用。 []