OriginとRを一緒に利用するいくつかの方法があります。
R オブジェクトとR コンソールを使用するには、Rがローカルのパソコンにインストールされている必要があります。RS オブジェクトとRserve コンソールを利用するには、サーバ側にRパッケージがインストールされているかつ、クライアント側にあるOriginと通信が出来ることが条件となります。
必要なOriginバージョン:2016SR0
LabTalkオブジェクトR および RS を使用してRコマンドを実行し、LabTalkとR間で変数の受け渡しが可能です。以下のサンプルは、R 及び RServe(Rの代わりにRSを使用)の両方で有効です。
LabTalkでRコマンドを実行する前に、以下を実行してRアプリケーションを初期化します。
if( R.Init()<0 ) { type -b "Please install R software first."; return; }
スクリプトウィンドウで実行します。
RSオブジェクトを初期化するには、以下のスクリプトを参考にしてください。パラメータ設定についてはこのページを確認してください。
if(RS.Init(***.***.**.**, 12306, user, password)<0) // アドレスはRservePC IP(例:192.168.18.75) { type -b "Initialize failed."; return; }
Rコマンドを実行
R.Exec(rand<-sample(x = 1:6, size = 50, replace = TRUE)); R.Exec(rand);
分析を実行します。
R.Exec(sum<-summary(rand)); R.Exec(sum);
サマリーを表示します。
Min. 1st Qu. Median Mean 3rd Qu. Max. 1.00 2.00 3.50 3.56 5.00 6.00
複数のRコマンド行を実行
R.Exec("array<-1:25;dim(array)<-c(5,5);array") // セミコロンで区切った複数行のRコマンドを実行
RSコマンドを実行
string fname$ = system.path.program$ + "Samples\Curve Fitting\Sensor01.dat"; impasc; range r1 = 1:2; //ワークシートからR ベクターにデータを送る RS.Send(%(r1), RR, 2); //範囲をR data.frame に送る RS.Exec(fit<-lm(RR$Sensor.Output~RR$Displacement)); //線形フィットを実行 RS.Exec(fit);
これらに加えて、Perform Logistic regression in R by using LabTalkのページに練習用サンプルがあります。
コンピュータ内の*.R ファイルを実行したい場合、スクリプトウィンドウで以下のシンタックスを使用します。
R.Exec(source(".R file path"));
例えば、
R.Exec(source("D:\\RData\\test.R"));
//ワークブックをアクティブにする R.Send("1!1", arr1, 0); // 現在のワークブックのSheet 1、列1を変数 ''array'' (データ型 vector)としてRに送る
range rx=1; // 範囲表記 rx を使用してアクティブワークシートの列1を参照 R.Send(%(rx), rlabel, 0); // R変数 rlabel (type vector)に列1を送る
// 最初の列の値が1, 2, 3, -- のようになっているとする range rr = 1; // アクティブなワークシートの最初の列を参照 R.Send(%(rr), temp, 0); // 最初の列をR変数tempとして送信
R.Receive("1!1",RMat,1) // R 行列変数 RMat を現在の行列ブックの最初の行列オブジェクトに受け取る R.Receive("1!1",df$vec1,0); // Rデータフレーム 'df' 内のデータメンバー 'vec1' をベクトルとして列に受け取る
// 値 [1] FALSE FALSE TRUEの論理的なベクトルがあると仮定 range rl=1; R.Receive(%(rl),temp,0); // 代わりにアクティブシートの列1を 0,0,1 に
RオブジェクトとRSオブジェクトには、GetReal、SetReal、GetStr、SetStrの4つのメンバー関数があり、LabtalkとRの間で数値変数と文字列変数を渡すために使用されます。次に例を示します。
数値または文字列の変数をR Serveコンソールで定義します。
Rvar=16 Rstr="height" e1=list(name="Apple", a=3)
LabTalk変数に値を渡します。
R.GetReal(LTVar, Rvar) R.GetStr(LTStr$, Rstr) //pass a real number in a R list 'e1' to a Labtalk variable R.GetReal(LTVar,e1$a);
または、LabTalk で数値または文字列変数を定義し、R変数に渡すこともできます。
R.SetReal(LTVar2, Rvar) R.SetStr(LTStr2$, Rstr)
Rコンソール(またはRserve コンソール)を使用してダイアログ入力ボックスで直接コマンドを実行し、<< および >>のボタンを使用してOriginのワークシートに結果の値を受け渡すことができます。Rコンソール(Rserveコンソール)を使用して、RとOriginワークシート(行列シート)間でデータを複数のフォーマット (vector, matrix, data.frame) に変換できます。
以下のグラフは、二項分布のランダムデータを生成し、Originのワークシートに送る方法を説明しています。