しっかりしたRのプログラムを書こうとした時に、とりあえず知っておくと良い知識をまとめました。
ソースとしては以下を参照:
- Creating R Packages: A Tutorial (http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf)
- Google's R Style Guide (https://google-styleguide.googlecode.com/svn/trunk/Rguide.xml)
- CRANのPackege一覧 (http://cran.r-project.org/web/packages/available_packages_by_name.html)
- Rの拡張を書く (http://cran.r-project.org/doc/contrib/manuals-jp/R-exts.jp.pdf)
ディレクトリ構成
以下の関数で自動生成することができる。
package.skeleton
.
├── DESCRIPTION
├── NAMESPACE
├── MD5
├── R
│ └── package_name.R
├── data
│ └── sample_data.Rda
├── man
│ ├── some_function.Rd
│ └── the_other_function.Rd
└── tests
└── package_name_test.R
ファイル名
アンダースコアでつなぎ.Rと大文字で終わる。
great_program.R
変数名
dot.splitedというように.でつなぐこと推奨。-や_は使わない。場合によっては、camelCaseもOK。
関数名
付け方は特に規定されていないが、GoogleはCamelCase(arg1, arg2 = val)というように大文字始まりのキャメルケースを推奨している模様。
Rのデフォルトはis.func(x)というように変数名と同様だが、この方法だとisインスタンスのfuncメソッドとも解釈できてしまうので良くない。大文字始まりが嫌いなら小文字のcamelCaseにすると良い。
関数の引数
デフォルト引数のあるものは最後に書く。(デフォルト引数は=を使う。)
折り返すときは、=の前後では折り返さない。
short <- function(a1, a2, a3 = value)
LongFunction <- function(arg1,
arg2,
arg3 = default_value)
代入
<-を使う。=は使わない。
コメントの書き方
#の後に1つ空白を空けた後、コメントを書く。
ソースと同じ行にコメントを書く場合、前に2つスペースを空ける。
# Create histogram of frequency of campaigns by pct budget spent.
hist(df$pct.spent,
breaks = "scott", # method for choosing number of buckets
起動方法
インタプリタとしてRを起動したい時
-no-saveをつけると作業スペースを保存しないので便利。
$ R –no-save
プログラムを実行したい時
$ R --vanilla --slave < sample.R
プログラムを実行したい時(引数あり)
--argsパラメータを渡すと、RプログラムからcommandArgs()として受け取れるようになる。
$ R --vanilla --slave --args 1 2 str < test.R
commandArgs()の中身は"R" "--vanilla" "--slave" "--args" "1" "2" "str"となり使いにくい。
commandArgs(trailingOnly = T)とすると"1" "2" "str"となり、扱いやすくなる。
数字を数値として扱うときは、as.numericを使って変換する必要がある。