Google
WWWを検索
サイト内を検索

他のプログラミング言語を経験してからRをいじりだした人に多いと思うのですが、便利関数で簡潔に実現できる処理を、ループ処理で複雑に書いて、苦労した上に見通しとパフォーマンスが悪いコードを生成することがあります。

1 \({}_m\!C_n\)

組み合わせの数の計算ができるchoose関数があります。コンビネーションではないので注意しましょう。

# 5!/(3!2!)
choose(5, 3)
[1] 10
# factorialで書くと長々として遅い
factorial(5)/(factorial(3)*factorial(2))
[1] 10

2 対話モードで動いているか調べる

interactive()TRUEが戻って来た場合は対話モードで動いています。バッチ処理と対話モードで挙動を変えたいときに使えます。

3 sweep

行列の要素を行や列ごとに足したり引いたりする関数です。applyで間に合うので使う機会は乏しいのですが、たまに使われているのを見かけます。

4 GUIのファイル・ダイアログを使う

使いどころは乏しい気もしますが、file.choose()でできます。

file.edit(file.choose())

とすれば、ファイルを指定してエディターで編集できます。

5 ファイルパスを分解する

正規表現を使うと、拡張子がないときの処理を忘れてしまったりするので、これらを使いましょう。

filepath <- "/home/uncorrelated/docs/example.csv"
# 拡張子以外を得る
(sans_ext <- tools::file_path_sans_ext(filepath))
[1] "/home/uncorrelated/docs/example"
# 拡張子を得る
(ext <- tools::file_ext(filepath))
[1] "csv"
# ファイル名を得る
(filename <- basename(filepath))
[1] "example.csv"
# パスを得る
(path <- dirname(filepath))
[1] "/home/uncorrelated/docs"