Rでの自作パッケージの作り方
ふと自作パッケージを作りたい!!と思って挑戦し、なんとか調べながら作成することが出来ました。
R中級者になると自作関数も増えてきて、投稿目的でなくてもパッケージ管理したくなると思います。
パッケージ作成の大きな流れはこんな感じ
- 自作関数&データをRコンソールに読み込む
- package.skeleton関数でパッケージのひな型を作る
- 説明ファイルの修正をする(DESCRIPTIONファイル、.rdファイル)
- コマンドプロンプトかターミナルでチェックとビルドを行う
紹介しているブログはいくつかありましたが、自分がネットで探してもよくわからなかった部分を本ブログで紹介します。
結論的には、少しCMDが使えれば自作のパッケージは作れます。
何段階か壁があると思いますが、多くの人がつまづくのは以下の点だと思う。
- package.skeleton関数が上手くいかない
- description、rdファイルの作り方が分からない
- CMD上でRをどう動かせばいいか分からない
- R CMD checkでエラーが起こる
- R CMD buildでエラーが起こる
ひとつずつつぶしていきましょう。
1.package.skeleton関数が上手くいかない
以下のRjpwikiの通りにやったらとりあえず出来ました。
http://www.okada.jp.org/RWiki/?%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%A4%F2%BA%EE%A4%EB
http://www.okada.jp.org/RWiki/?%BB%E4%C5%AA%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%BA%EE%C0%AE%CB%A1
重要なのは、
だと思います。
"path="を設定しない場合は、マイドキュメントにパッケージのひな型が作られます。
2.description、rdファイルの作り方が分からない
descriptionファイルのひな型は上のURLの1つ目にあります(テキストエディタで編集)。
rdファイルは一応この文書が参考になります。
http://cran.r-project.org/doc/contrib/manuals-jp/R-exts.jp.pdf
rdファイルはパッケージ、関数、データの全てについて作らなくてはいけません。
またRのバージョンによって最初から全てのrdファイルを作ってくれる場合と、パッケージの分しか作ってくれない場合があります。
私の場合、32bit R2.12.1でやったらパッケージの分しか作ってくれなかったけど、64bit R2.11.1でやったら全ファイルの分を作ってくれました。
バージョンのせいなのか、windowsのせいなのか、64bitのせいなのかは謎です。
package.skeleton関数の仕様なのでしょう。
rdファイルはテキストエディタで開いて、なんとなく修正しましょう。
最低限修正しなきゃいけない個所は、
- packageのexample部分を消す
- titleに何か入れる(空白でもいい)
これをやればとりあえずいけるはずです。
3.CMD上でRをどう動かせばいいか分からない~5.R CMD buildでエラーが起こる
windowsだったら、
- パッケージをR.exeがある場所に移動しておく
- cmd起動
- cdでR.exeがある場所に移動
- R CMD check パッケージ名でチェック
- R CMD build パッケージ名でパッケージを作る
実はbuildをしなくてもR CMD checkが上手くいけば、パッケージ名.Rcheckフォルダの中にパッケージは出来ています(warningが出ても)。
これをRのlibraryの中に入れればちゃんとパッケージとして機能します。
package.skeleton関数でrdファイルが全て作ってあれば、2の修正だけでcheckは通るはずです。
自分でrdを作ろうとすると、、、エラーの嵐ですねorz
macだったら、ターミナルを起動していきなりR CMD check パッケージ名を実行できます。
パッケージの置き場所は、ユーザー名の下だったはずです(finderを起動したら最初に居る場所)。
てか、windowsでbuildしようとすると、「libraryにコピーできません」っていう意味のエラーが出ます。
これらがクリアできれば、無事にパッケージが出来ます!
これで勝つる!?
以下はその他参考ページ
http://www.slideshare.net/yokkuns/10r
http://d.hatena.ne.jp/syou6162/20090213/1234452760
追記
ビルドしたパッケージを公開するためにはこの ftp://cran.r-project.org/incomingcran FTPにアップする必要があります。
macの場合は、Transmit.appというソフトが便利でした。
アップした後は、その旨を cran@r-project.org にメールしておきましょう。