しっかりした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
を使って変換する必要がある。