目次


目的

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 : 旧R(D)COM Server

ライセンス

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ボタンを押す。

正常に起動した画面

この画面になれば正常に起動している。

RDCOMtest1.PNG
RDCOMtest2.PNG

正常に起動しなかった場合(R2.11.1まで)

多くの場合、RのR_HOME & PATHの設定、レジストリ(HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE)の設定がうまくいっていない。
正常な場合の環境変数

statconnDCOMtest3.PNG

正常な場合のレジストリの値

statconnDCOMtest4.PNG
statconnDCOMtest5.PNG

正常に起動しなかった場合(R2.12.0以降)

R2.12.0のbin/i386内にあるRSetReg.exeを起動してレジストリを設定する。
環境変数の設定は不要(設定すると逆に動かなくなる)

デバッグ

そこで、MicrosoftのところからDebugView.exeを取って、何がおかしいのかを調べる。
私の場合、Rのコンパイル環境を整備したときの、Pathの残骸が残っていたことと、Rのレジストリキーが足りなかった。
そこで不要なPathを消去した後、ユーザー環境変数にPATHとR_HOMEを追加し、各レジストリにRまでのパスを追加した。この対処方法はマニュアルに載っている。
また、windowsOSのコマンドプロンプトから

wmic environment list brief

を実行すると環境変数のリストが見れるので、チェックできる。

環境変数をプログラムで設定(R2.11.1まで、R2.12.0以降は実行しないでください)

env.dat内に設定データを作成し、environment.wsfを実行する。

STATCONNECTORSRVLib

メソッド

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はインスタンス名

Rの初期化

インスタンス名.Init("R")

Rプログラムの実行

インスタンス名.EvaluateNoReturn("x<-rnorm(1:10)")
インスタンス名.EvaluateNoReturn("plot(x)")

デフォルトグラフィックデバイスにplotされる。

RExcel

R2.7.2以上でなければ動かないので注意。Excel は 32 ビット版のみ対応。

事前準備

インストール

RExcelInst.latest.exeを上記サイトよりダウンロード後インストールする。(古いRExcelプログラムは消去しておかないとうまく動かない)
注意)RExcelをインストールすると、statconnDCOMが落ちやすくなるので、RExcelとstatconnDCOMを使ったプログラムは現状では共存させない方が良い。

rcom

rcomを使ってRからGoogleEarthを直接コントロール

GoogleEarthとR

rcomを使ってRからExcel起動

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にし、その後ワークブックとワークシートを生成します。

rcomを使ってRからパワーポイントのスライドを作る(R2PPTパッケージ)

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 インターフェース )パッケージ中のオブジェクト一覧

RExcelのデモInteractive graphicsのlabelの文字化けを回避する方法(WINXPSP2/Excel2000)

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の" "は半角の空白。
要するに足りない文字長分空白を追加しているだけ。

複数のRのバージョンがインストールされているとRDCOMがうまく動かない(WIN)

カレントのバージョン指定をしないとRDCOMは上手く動かないことがあるのでbin内のRSetReg.exeを実行すると、そのバージョンがカレントになる。

コメント欄


アクセス数:

5455 人


添付ファイル: filestatconnDCOMtest3.PNG 3058件 [詳細] fileRDCOMtest2.PNG 1374件 [詳細] fileenv.dat 3319件 [詳細] filestatconnDCOM.latest.exe 1905件 [詳細] fileRDCOMtest1.PNG 3017件 [詳細] filestatconnDCOMtest5.PNG 3080件 [詳細] fileenvironment.wsf 3318件 [詳細] filestatconnDCOMtest4.PNG 3074件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17