目次
Rユーザー会2007でRcommanderのPluginの作り方を知りたい方が多いように感じましたので、私が試した方法を公開します。
ただし、Windows2000SP4,XPSP2上で作成する場合の方法ですので、Mac,Linuxの方はご勘弁を。
なお、Pluginの作成に当たっては舟尾さんのRCommanderハンドブックの「RCommanderのカスタマイズ」を参考にしました。
(ここで公開している方法は、「なんちゃってRcmdrPlugin」の作成方法です。皆さんが開発したすばらしいツールをRcmdrPlugin化してみてください。)
Writing R Extensions日本語訳(間瀬先生)
http://www.is.titech.ac.jp/~mase/mase/R-exts.jp/R-exts.jp.html#SEC_Top
Writing R Extensions本家
http://cran.r-project.org/doc/manuals/R-exts.html
The R Commander: A Basic-Statistics GUI for R
http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/index.html
Extending the R Commander by "Plug-In" Packages <=GOOD!
http://tolstoy.newcastle.edu.au/R/e3/help/att-2806/wrapper.pdf
RjpWiki内
パッケージを作る
私的パッケージ作成法
Windowsでパッケージを自作
Rから他言語利用
Windowsでパッケージをビルドするためには、環境の設定が必要になります。この環境はパッケージのビルドだけではなく、Rをソースからビルドする時にも利用できます。
(注)過去のビルド環境設定の記事には「cygwin等のインストール」が書かれてあるものがありましたが、現在はRtools,Microsoft HTML Help WorkShop,MikTex,Inno Setupのインストールでビルド環境が作れます。
下記のサイトから利用しているRのバージョンに適合するRtoolsをダウンロードしてインストールする。
http://www.murdoch-sutherland.com/Rtools/
パスが付加される。
再起動する。
下記のサイトからHtmlhelp.exeをダウンロードしてhhc.exeをインストールする。hhc.exeはソースをビルドするときにヘルプファイル(.chm)を作成するのに利用されます。
http://msdn2.microsoft.com/en-us/library/ms669985.aspx
Pathの設定をしてくれないので、後で設定が必要。
Pathは自動的に設定される。
http://jrsoftware.org/isinfo.php (とりあえず保留)
XPでは[コントロールパネル][システム][詳細設定][環境変数][システム環境変数](2000では[コントロールパネル][システム][詳細][環境変数][システム環境変数])の中にPathという環境変数がありますので、R、hhc.exeへのパス情報を付加してください。(Rtools,MiKTexは自動で設定されます)
;C:\Program Files\R\R-2.5.1\bin ;C:\Program Files\HTML Help Workshop
この設定がきちんとできていないと、チェックやビルドの時にエラーが多発します。
手動で設定するのが面倒な場合は、下記のツールを用意しましたのでお使いください。zip解凍後、Path設定.wsfをダブルクリックしてください。これはR2.5.1用です。他のバージョンで使う場合は、path.txtの内容を変更してください。
(注)Path設定.wsfを何度も起動すると、いくつもPathが作られてしまいます。消すときは、手動でお願いします。
(注意!)システム環境変数のPathを変更した場合は必ずOSを再起動してください。再起動しないと設定が反映されません。
*利用するコード
makevector.rは舟尾さんのRCommanderハンドブックのMyAdd関数を元に作成しました。
*利用するデータ
inst.zipはダウンロード後解凍しておく
まずRguiを起動し、
Vector <-function(){ initializeDialog(title="ベクトル生成") Var1 <- tclVar("") Var1Entry <- tkentry(top, width="6", textvariable=Var1) Var2 <- tclVar("10") Var2Entry <- tkentry(top, width="6", textvariable=Var2) onOK <- function(){ closeDialog() XXX <- as.numeric(tclvalue(Var1)) YYY <- as.numeric(tclvalue(Var2)) logger("ベクトルを生成します:") command <- paste(XXX, ":", YYY, sep="") doItAndPrint(command) tkfocus(CommanderWindow()) } OKCancelHelp(helpSubject="+") tkgrid(tklabel(top, text=gettextRcmdr("引数1")), Var1Entry, sticky="e") tkgrid(tklabel(top, text=gettextRcmdr("引数2")), Var2Entry, sticky="e") tkgrid(buttonsFrame, columnspan=2, sticky="w") tkgrid.configure(Var1Entry, sticky="w") tkgrid.configure(Var2Entry, sticky="w") dialogSuffix(rows=3, columns=2, focus=Var1Entry) } package.skeleton(name="RcmdrPlugin.makevector",path="c:/")
C:直下にRcmdrPlugin.makevectorフォルダが生成される
とりあえず省略(CRANに登録するならきちんと書く)
inst.zipをダウンロードし、解凍すると[inst][etc][menu.txt]が入っている
RcmdrPlugin.makevectorフォルダ内に[inst]フォルダごと投入
menu.txtがRCommanderのメニューになる
Windowsのコマンド画面
cd c:\ RCMD check RcmdrPlugin.makevector --no-examples
--no-examplesを指定しないと、exampleの作成をしようとしてエラーになる
エラーにならなければOK
チェックが進行し
チェック終了
Windowsのコマンド画面
RCMD build --binary RcmdrPlugin.makevector
RcmdrPlugin.makevector_1.0.zipが生成され、ビルドが終了する
--binary無しだと、tar.gzファイル(ソースファイル)が作成される
エラーが発生した場合は、設定の何かが間違っているので最初から手順を確認する
Pathの設定を特に確認すること
RcmdrPlugin.makevectorパッケージのインストール
Rguiから[パッケージ][ローカルにあるzipファイルからのパッケージのインストール...]で
RcmdrPlugin.makevector_1.0.zipをインストールする
インストールがうまくいかない場合はプログラムミスの可能性があるので再度コードをチェック(とくにmenu.txtの内容)
library(Rcmdr)
2度目以降は
Commander()
RCommanderが起動したら、[ツール][Rcmdrプラグインのロード...]で
RcmdrPlugin.makevectorを選択する
RCommanderが再起動して、
[ベクトル生成]メニューが追加される
実際に実行すると
こうなる
remove.packages("RcmdrPlugin.makevector")
C:\>cd c:\ C:\>RCMD check RcmdrPlugin.makevector --no-examples * checking for working latex ... OK * using log directory 'C:/RcmdrPlugin.makevector.Rcheck' * using R version 2.6.1 (2007-11-26) * checking for file 'RcmdrPlugin.makevector/DESCRIPTION' ... OK * checking extension type ... Package * this is package 'RcmdrPlugin.makevector' version '1.0' * checking package dependencies ... OK * checking if this is a source package ... OK * checking whether package 'RcmdrPlugin.makevector' can be installed ... ERROR Installation failed. See 'C:/RcmdrPlugin.makevector.Rcheck/00install.out' for details.
instフォルダのところで躓いている様なので、RCMD checkのところではinstフォルダを入れずに実行し、chmが生成されてからinstフォルダを然るべき場所に入れてRCMD buildを実行するとやはりエラーが出ます。
C:\>RCMD build --binary RcmdrPlugin.makevector * checking for file 'RcmdrPlugin.makevector/DESCRIPTION' ... OK * preparing 'RcmdrPlugin.makevector': * checking DESCRIPTION meta-information ... OK * removing junk files * checking for LF line-endings in source and make files * checking for empty or unneeded directories * building binary distribution WARNING: some HTML links may not be found installing R.css in C:/***************/Temp/Rinst174092147 Using auto-selected zip options '' ---------- Making package RcmdrPlugin.makevector ------------ adding build stamp to DESCRIPTION installing R files installing inst files FIND: パラメータの書式が違います make[2]: *** [C:/***************/Temp/Rinst174092147/RcmdrPlugin. makevector/inst] Error 2 make[1]: *** [all] Error 2 make: *** [pkg-RcmdrPlugin.makevector] Error 2 *** Installation of RcmdrPlugin.makevector failed *** Removing 'C:/***************/Temp/Rinst174092147/RcmdrPlugin.makevector' ERROR * installation failed
環境設定の確認として、instフォルダを入れずに上記手順を実行すると、エラーもなく無事にパッケージが出来上がるので、環境設定は問題ないと思うのですが。。-- 2007-12-20 (木) 09:53:02
installing R.css in C:/RcmdrPlugin.makevector.Rcheck
---------- Making package RcmdrPlugin.makevector ------------ adding build stamp to DESCRIPTION installing R files installing inst files FIND: パラメータの書式が違います make[2]: *** [C:/RcmdrPlugin.makevector.Rcheck/RcmdrPlugin.makevector/inst] Error 2 make[1]: *** [all] Error 2 make: *** [pkg-RcmdrPlugin.makevector] Error 2 *** Installation of RcmdrPlugin.makevector failed *** Removing 'C:/RcmdrPlugin.makevector.Rcheck/RcmdrPlugin.makevector'
ここはokinawaが作成しました。
アクセス数: 5580 人