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") † 1 † 2 † 3 † 4 † 5 † 6 † 7 † 8 † 9 † 10
文字列ベクトルで返ってくるので,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()を仕込んでくれる感じです。超便利ですね。
終わり
以上,小ネタ集でした!