utilsパッケージより小ネタ集(R Advent Calendar 2011 7日目)

alarm

ではみなさん,おもむろに下のスクリプトを実行してください。

alarm()

音が出ましたね。それだけです。

R Advent Calendar 2011のレベルが高すぎて泣きそうです。でも開き直って,しょーもない小ネタでお茶を濁したいと思います!

ということで,utilsパッケージをざーっと眺めて,目に付いたものを紹介していきたいと思います。

ちなみにさきほどのalarm関数ですが,関数を使わなくとも,文字列で実現できます。alarmの中身を見れば分かりますが,

cat("\a")

これだけで音が出ます。これをcolnamesとかに仕込んでいたずらを…と思ったんですがうまくいきませんでした。

apropos

知ってる人が多いと思いますが。aproposはオブジェクトを検索する関数です。うろ覚えの関数を探すのに便利です。

apropos("sum")

いろいろ合計する関数がありますね。summaryも交ざっちゃってますが。よくわからない変数なんかも交ざってきますが,modeを指定することで,関数限定で検索することもできます。

apropos("sum", mode="function")

個人的には,適当に名前の当たりをつけて,こんな関数ないかなーっていうのを探すことも多いです。

例えばtestで検索すると,いろんな検定用関数が出てきます。

apropos("test", mode="function")

文字列を操作したいけどなんか良い関数あったっけ?ってときは下のような検索をしたり。

apropos("char", mode="function")
apropos("str", mode="function")

browseVignettes

browseVignettes関数を実行すると,インストール済みパッケージのvignette一覧をブラウザで見ることができます。

browseVignettes()

vignetteは重要な情報源なのですが,積極的に探さないかぎり行き当たらないのが難点です。いつのまにか改訂されてたり,追加されてたりしますし。

暇なときにでもbrowseVignettesを使って,変化がないか見てみましょう。

citation

citation関数は,R本体やパッケージを引用したいときに,そのひな形を出力してくれます。

> citation()

To cite R in publications use:

  R Development Core Team (2011). R: A language and environment for
  statistical computing. R Foundation for Statistical Computing,
  Vienna, Austria. ISBN 3-900051-07-0, URL
  http://www.R-project.org/.

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {R: A Language and Environment for Statistical Computing},
    author = {{R Development Core Team}},
    organization = {R Foundation for Statistical Computing},
    address = {Vienna, Austria},
    year = {2011},
    note = {{ISBN} 3-900051-07-0},
    url = {http://www.R-project.org/},
  }

We have invested a lot of time and effort in creating R, please cite
it when using it for data analysis. See also ‘citation("pkgname")for citing R packages.

bibtex形式のものも出力してくれるのが親切ですね。
引数にパッケージ名を与えれば,パッケージの引用フォーマットを出力してくれます。

> citation("survival")

To cite package ‘survival’ in publications use:

  Terry Therneau and original Splus->R port by Thomas Lumley (2011).
  survival: Survival analysis, including penalised likelihood.. R
  package version 2.36-10.
  http://CRAN.R-project.org/package=survival

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {survival: Survival analysis, including penalised likelihood.},
    author = {Terry Therneau and original Splus->R port by Thomas Lumley},
    year = {2011},
    note = {R package version 2.36-10},
    url = {http://CRAN.R-project.org/package=survival},
  }

ATTENTION: This citation information has been auto-generated from
the package DESCRIPTION file and may need manual editing, see
‘help("citation")’ .

これらの情報は基本的にはパッケージのdescriptionからの自動生成なのですが,パッケージにCITATIONファイルが用意されている場合,そちらが表示されます(オプションでどちらを表示するか指定もできます)。

> citation("VGAM")

To cite VGAM in publications please use:

  Thomas W. Yee and C. J. Wild (1996). Vector Generalized Additive
  Models. Journal of Royal Statistical Society, Series B, 58(3),
  481-493.

and/or

  Thomas W. Yee (2010). The VGAM Package for Categorical Data
  Analysis. Journal of Statistical Software, 32(10), 1-34. URL
  http://www.jstatsoft.org/v32/i10/.

and/or

  Thomas W. Yee (2011). VGAM: Vector Generalized Linear and Additive
  Models. R package version 0.8-4. URL
  http://CRAN.R-project.org/package=VGAM

CITATIONファイルが用意されている場合,そこに記載されている論文や書籍は確実にパッケージの重要な情報源ですので,要チェックです。

create.post

create.post関数は,メールを作成します。

送信してくれるわけではなく,実行するとメーラーが起動します。

create.post(instructions="メール本文",
            subject="Rでメール",
            address="test@example.com",
            info="重要!")

ほとんど説明の必要がないですが,infoに指定した文字列は,"--please do not edit the information below--"という文のあとに書き込まれます。

使い途あるようなないような関数ですね(笑)

formatUL, formatOL

ベクトルを箇条書き形式に整形してくれます。ULは順序なしの箇条書き(Unordered List),OLは順序ありの箇条書き(Ordered List)です。

> cat(formatUL(1:10), sep="\n")
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
* 10
> cat(formatUL(1:10, label="†"), sep="\n")12345678910

文字列ベクトルで返ってくるので,catで出力しています。ラベルオプションで頭の記号を変えられます。formatOLも使い方は同じです。

cat(formatOL(1:10), sep="\n")
cat(formatOL(1:10, type="a"), sep="\n")    # アルファベット
cat(formatOL(1:10, type="A"), sep="\n")
cat(formatOL(1:10, type="i"), sep="\n")    # ローマ数字
cat(formatOL(1:10, type="I"), sep="\n")

使いどころを選びますが,知ってると便利な場面もあるかもしれないですね。

recover

これは直接実行する関数ではなく,オプションに設定します。

options(error = recover)

このように設定すると,エラーが起きたときに,エラーが起きた環境に遡って変数などを見ることができます。

デバッグのためにbrowser()を仕込むのは常套手段ですが,エラーが起きた箇所に自動的に遡ってbrowser()を仕込んでくれる感じです。超便利ですね。

終わり

以上,小ネタ集でした!