目次
statconnDCOM(旧RDCOMサーバ)およびrcomパッケージに関する情報をこちらでまとめています。
statconnDCOMおよびrcomパッケージはCOM(ActiveXObject)を使って、Rと他のアプリケーションを連動させる仕組みです。
COMにはサーバーとクライアントがあり、連動させるアプリケーションのどちらが親(Server)になるかで利用方法が異なります。
他言語からRを利用する場合は、statconnDCOMを使ってください。
Rから他言語(他アプリ)を利用する場合は、rcomを使ってください。
関連のRExcelは、上記の機能を使って、R&RcmdrとExcelを連動させるものです。
statconn.com: http://www.statconn.com/
RCOMホームページ: http://sunsite.univie.ac.at/rcom/
RExcelに(古い)解説あり。
statconnDCOMはGPLではなく、独自のライセンスとなっています。基本的には再配布の制限以外は自由です。
追加:作者の一人Thomas Baierにライセンスについてメールで確認したところ、スプラッシュスクリーンの表示と再配布禁止、結果に「statconnDCOMを使った・・・」が書いてあれば、商用に使ってOKとのこと。スプラッシュスクリーンを消去するか、独自のスプラッシュスクリーンの作成、再配布を可能にした商用版の作成はネゴしてくれとのことでした。P.S 寄付も待ってるよ!とのことでした。
statconnDCOMを上記サイトよりダウンロード後インストールする。(古いバージョンは消去しておくこと。上書きするとうまく動かないことがある。)
Rにrcomとrscproxyパッケージをインストールし、installstatconnDCOM()実行。
library(rcom) installstatconnDCOM()
プログラムにstatcommメニューが作成されているので、[statconn][DCOM][Server 01 Basic Test]を実行。 StatConnectorTestが起動するので、StartRボタンを押す。
この画面になれば正常に起動している。
多くの場合、RのR_HOME & PATHの設定、レジストリ(HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE)の設定がうまくいっていない。
正常な場合の環境変数
正常な場合のレジストリの値
R2.12.0のbin/i386内にあるRSetReg.exeを起動してレジストリを設定する。
環境変数の設定は不要(設定すると逆に動かなくなる)
そこで、MicrosoftのところからDebugView.exeを取って、何がおかしいのかを調べる。
私の場合、Rのコンパイル環境を整備したときの、Pathの残骸が残っていたことと、Rのレジストリキーが足りなかった。
そこで不要なPathを消去した後、ユーザー環境変数にPATHとR_HOMEを追加し、各レジストリにRまでのパスを追加した。この対処方法はマニュアルに載っている。
また、windowsOSのコマンドプロンプトから
wmic environment list brief
を実行すると環境変数のリストが見れるので、チェックできる。
env.dat内に設定データを作成し、environment.wsfを実行する。
AddGraphicsDevice(bstrName As %String, pDevice As %IDispatch) Close() Evaluate(bstrExpression As %String) as %Variant EvaluateNoReturn(bstrExpression As %String) GetConnectorInformatin(lInformationType As STATCONNECTORSRVLib.InformationType) as %String GetErrorId() as %Integer GetErrorText() as %String GetInterpreterInformtn(lInformationType As STATCONNECTORSRVLib.InformationType) as %String GetServerInformation(lInformationType As STATCONNECTORSRVLib.InformationType) as %String GetSupportedTypes(ByRef pulTypeMask As %Integer) GetSymbol(bstrSymbolName As %String) as %Variant Init(bstrConnectorName As %String) RemoveGraphicsDevice(bstrName As %String) SetCharacterOutputDevc(pCharDevice As %IDispatch) SetErrorDevice(pCharDevice As %IDispatch) SetSymbol(bstrSymbolName As %String, vData As %Variant) SetTracingDevice(pCharDevice As IDispatch) SetUserInterfaceAgent(pUIAgent As %IDispatch)
IDispatchはインスタンス名
インスタンス名.Init("R")
インスタンス名.EvaluateNoReturn("x<-rnorm(1:10)") インスタンス名.EvaluateNoReturn("plot(x)")
デフォルトグラフィックデバイスにplotされる。
R2.7.2以上でなければ動かないので注意。Excel は 32 ビット版のみ対応。
RExcelInst.latest.exeを上記サイトよりダウンロード後インストールする。(古いRExcelプログラムは消去しておかないとうまく動かない)
注意)RExcelをインストールすると、statconnDCOMが落ちやすくなるので、RExcelとstatconnDCOMを使ったプログラムは現状では共存させない方が良い。
library(rcom) x<-comCreateObject("Excel.Application") comSetProperty(x,"Visible",TRUE) newwb<-comInvoke(comGetProperty(x,"Workbooks"),"Add") ws<-comGetProperty(newwb,"Worksheets",1)
Excelの'COMObject'オブジェクトxを生成し、外部ポインタがx内に設定されます。
comSetProperty()でExcelをVisibleにし、その後ワークブックとワークシートを生成します。
library(rcom) library(R2PPT) myPres<-PPT.Init(visible=FALSE) myPres<-PPT.AddTitleSlide(myPres,title="タイトルスライド",subtitle="Subtitle here") myPres<-PPT.AddTitleOnlySlide(myPres,title="Title Only",title.fontsize=40,title.font="Arial") myPres<-PPT.AddTextSlide(myPres,title="Text Slide",text="Text1 \rText2 \rText3",text.font="Arial") myPres<-PPT.SaveAs(myPres,file=paste(getwd(),"test R2PPT Pres.ppt",sep="/")) myPres<-PPT.Close(myPres) rm(myPres)
日本語も正常に表示できました R2PPT(rcom を用いたマイクロソフトパワーポイント用簡易 R インターフェース )パッケージ中のオブジェクト一覧
labelに全角文字を入力すると文字化けを起こす。
labelの文字長の計算がうまく行われていないので、Excelから渡す文字を加工してしのぐ。
M5にlabel用の文字「Rラベル1」が入っている場合、R(半角)ラベ(全角)ル(半角)1(半角)
=M5&REPT(" ",LENB(M5)-LEN(M5))&REPT(" ",LENB(M5)-(LENB(M5)-LEN(M5))*2)
で渡す。最初のREPTの" "は全角の空白、次のREPTの" "は半角の空白。
要するに足りない文字長分空白を追加しているだけ。
カレントのバージョン指定をしないとRDCOMは上手く動かないことがあるのでbin内のRSetReg.exeを実行すると、そのバージョンがカレントになる。
6054 人