(旧www.9ten.netから) 最近仕事の都合でC#からR言語を利用するテストをやってみました。 意外とあまり情報がないので、こちらで述べます。 RDCOMのインストール等はこちらをご参照ください。 参照を設定して、プログラムの先頭に下記を書きます。 (※参照の設定は、C:\Program Files\statconn\DCOM\binの下にあるStatConnectorClnt.dll、StatConnectorSrv.exe、StatConnTools.exeを選択してください)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
StatConnector r = new StatConnector(); r.Init("R"); StringLogDevice d = new StringLogDevice(); object rt = (object)r; d.BindToServerOutput(ref rt); r.EvaluateNoReturn("dat<-read.table(\"e:/temp/testdata.csv\",header=TRUE,sep=\",\")"); r.EvaluateNoReturn("dat01<-dat[c(1:nrow(dat)),c(1,4,5,6,7,8,9)]"); r.EvaluateNoReturn("library(sem)"); r.EvaluateNoReturn("model <- specify.model(\"e:/temp/model01.txt\")"); r.EvaluateNoReturn("ans <- sem(model, cor(dat01), nrow(dat01))"); r.EvaluateNoReturn("t=capture.output(summary(ans))"); r.EvaluateNoReturn("print(t)"); r.EvaluateNoReturn("write(t,file=\"e:/temp/ans01.dat\")"); r.Close(); |
特に object rt = (object)r; d.BindToServerOutput(ref rt); は d.BindToServerOutput(ref (object)r); のように書くとエラーとなります。