目次


目的

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 ビット版のみ対応。

事前準備

  • statconnDCOMをダウンロードして、インストールしておく。
  • 現在利用しているRのbin内にあるRSetReg?.exeを実行しておく。HKEY_LOCAL_MACHINEにインストールパスが設定される。これをやらないと次のインストールに失敗する。

インストール

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を実行すると、そのバージョンがカレントになる。

コメント欄


  • 列名に日本語使ってRコマンダーに送ると文字化けが酷い。対策ありますか? -- tatabox? 2011-08-06 (土) 15:33:04
  • statconnDCOMがR2.12.0で動かない原因は環境変数にありました。PATHとR_HOMEがあるとエラーになります。 -- okinawa 2010-12-02 (木) 09:39:33
  • statconnDCOMがR2.12.0で動きました。古いstatconnDCOMと環境変数および設定したレジストリの内容を全て消去してからR2.12.0をインストールし、bin/i386内のRSetReg?.exeを実行してください。後はrcomパッケージをインストールした後、installstatconnDCOM()を実行してstatconnDCOMをインストールしてください。 -- okinawa 2010-11-30 (火) 13:42:06
  • Win R2.12.0はbin以下のディレクトリ構造が変わってしまっているのと、レジストリ構造が変わっているため、path等での問題があるようです。rcom本家でも同様の問題がすでに報告されています。 -- okinawa 2010-11-25 (木) 14:55:58
  • R2.12.0用のstatconnDCOM(3.1-2B7)は現在正常に動作していません。暫定的にR2.11.1用のstatconnDCOM(3.1-2B6)を置いておきます。正常に動くように改修されしだい消去しますのでご了解ください。 -- okinawa 2010-11-25 (木) 14:52:11
  • R2PPTパッケージが出ています。rcomを使ってRからpptスライドを作るものです。 -- okinawa 2009-06-29 (月) 09:12:59
  • Thomas Baierにライセンスについてメールで確認したところ、スプラッシュスクリーンの表示と再配布禁止、結果に「statconnDCOMを使った・・・」が書いてあれば、商用に使ってOKとのこと。スプラッシュスクリーンを消去するか、独自のスプラッシュスクリーンの作成、再配布を可能にした商用版の作成はネゴしてくれとのことでした。P.S 寄付も待ってるよ!とのことです。 -- okinawa 2009-06-15 (月) 09:26:32
  • r-comメーリングリストにて、MathematicaからRを動かす方法が公開されています。R-Linkという有償のものはあったようですが、今回のものはstatconnDCOM経由のものです。 -- okinawa 2009-06-15 (月) 08:58:04
  • RAndFriends?がR2.9.0対応。ststconnDCOMもR2.9.0で普通に動いてます。 -- okinawa 2009-04-21 (火) 09:48:28
  • RExcelの項を追加 -- okinawa 2009-04-15 (水) 16:41:37
  • 環境変数をプログラムで設定 追加 -- okinawa 2009-04-14 (火) 14:52:56
  • STATCONNECTORSRVLibのメソッドリスト追加 -- okinawa 2009-04-09 (木) 15:58:50
  • statconnDCOMいろいろいじってますが、結構安定して動いてるような気がします。(気のせいか?) -- okinawa 2009-04-08 (水) 16:31:06
  • statconnDCOMを起動するとスプラッシュスクリーンがでるのはなんとかならないのかな? -- okinawa 2009-04-08 (水) 15:57:54
  • statconnDCOM追加 -- okinawa 2009-04-08 (水) 15:56:36
  • 新しいRCOMページ、なかなかいいです。RExcelの教育videoもある。・・まあ、インストールが最大の難関なのだが・・・。 -- okinawa 2009-04-07 (火) 16:48:09
  • RCOMのホームページか新しくなったようです。ちゃんとサポートしてくれれば良いが・・・。 -- okinawa 2009-04-07 (火) 16:34:44
  • The new version 3.0-1B5 of R/Scilab (D)COM Server is out. -- okinawa 2008-11-11 (火) 08:46:30
  • RExcelInstaller?パッケージの利用の内容を変更しました。 -- okinawa 2008-11-07 (金) 15:20:17
  • RExcelInstaller?パッケージ利用の(3)bin内に、  binフォルダーが生成されません。 -- tnakagawa? 2008-11-07 (金) 15:04:53
  • 今回のROOoは、Linux&OSX版もありますよ! -- okinawa 2008-10-15 (水) 17:24:31
  • OOo3.0(win)で動作確認しました。ExamplesはC:直下に持っていってください。 -- okinawa 2008-10-15 (水) 17:21:38
  • ROOoが出てます! -- okinawa 2008-10-15 (水) 16:59:07
  • rcomのダウンロードエリアにRandFrendsSetup2070V20(R2.7.0対応版)が登録されました。これは、Rや関連パッケージごとインストールできるものです。 -- okinawa 2008-04-23 (水) 08:47:51
  • RExcelStartup?.xlsを起動すると、Rcmdrも起動します。また、ワークシート内にRcmdrと同じメニューが表示され、Rcmdrを操作することができます。RExcelがRcmdrを乗っ取ったって感じでしょうか? -- okinawa 2008-04-21 (月) 17:13:44
  • パッケージにもRExcelInstaller?が追加されました。これまではRDCOMServerと一緒に提供されていましたが、単体で動くようになっています。 -- okinawa 2008-04-21 (月) 16:50:18
  • http://sunsite.univie.ac.at/rcom/download/devel/内に色々追加されているようです。 -- okinawa 2008-04-21 (月) 16:48:32
  • RExcelでInteractive graphicsのlabelが文字化けする問題の回避方法を乗せました。 -- okinawa 2008-04-04 (金) 09:29:15
  • rcomを使ってRからGoogleEarth?を直接コントロールする(WIN)をGoogleEarthとRにUpしました。 -- okinawa 2007-10-10 (水) 14:34:43
  • RExcelに投稿したのだが、rcomで用いられているCOMObjectを利用したマルチバイト文字列の受け取りがうまく動いていない。どうやらCOMObjectがワードカウントをバイトカウントとしてObject内に取り込んでいるようだ。 -- okinawa 2007-10-01 (月) 10:34:17

アクセス数:

1389 人


添付ファイル: fileenvironment.wsf 1810件 [詳細] filestatconnDCOMtest3.PNG 1439件 [詳細] filestatconnDCOMtest4.PNG 1423件 [詳細] filestatconnDCOMtest5.PNG 1430件 [詳細] fileenv.dat 1663件 [詳細] fileRDCOMtest1.PNG 1417件 [詳細] fileRDCOMtest2.PNG 1373件 [詳細] filestatconnDCOM.latest.exe 606件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2015-03-01 (日) 01:15:59 (997d)