スクリプトガイド > JMPの拡張 > Rの操作 > JMPデータタイプとRデータタイプの相互変換
公開日: 04/01/2021

JMPデータタイプとRデータタイプの相互変換

表14.3に、R Send( )関数でJMPからRに変数を送った場合に、JMPのデータタイプ(データ型)が、Rにおいて、どのような型に変換されるかを示します。リストの場合は、リスト内の要素ごとにデータタイプをチェックして、変換します。なお、入れ子になっているリストも、サポートされています。

表14.3 R Send( )でのJMPデータタイプとRデータタイプの対応

Rデータタイプ

JMPデータタイプ

実数(double)

数値

文字列

文字列

実数の行列

行列

リスト

リスト

データフレーム

データテーブル

整数

行の属性

日付と時間

日付時間

時間差

時間の長さ

対のリスト

連想配列

R Init();
X = 1;
R Send( X );
S = "Report Title";
R Send( S );
M = [1 2 3, 4 5 6, 7 8 9];
R Send( M );
R Submit( "
X
S
M
" );
R Term();

表14.4に、R Get( )関数でRからJMPに変数を取得した場合に、Rのデータタイプ(データ型)が、JMPにおいて、どのような型に変換されるかを示します。リストの場合は、リスト内の要素ごとにデータタイプをチェックして、変換します。なお、入れ子になっているリストも、サポートされています。

表14.4 R Get( )でのJMPデータタイプとRデータタイプの対応

Rデータタイプ

JMPデータタイプ

実数(double)

数値

論理(ブール値)

数値 ( 0 | 1 )

文字列

文字列

整数

数値

日付と時間

日付時間

時間差

時間の長さ

因子(factor)

文字列のリスト、または、数値の行列

データフレーム

データテーブル

リスト

リストや行列を含んだリスト

行列

行列

数値ベクトル

行列

文字列ベクトル

文字列のリスト

グラフ

ピクチャー

Time Series(時系列)

行列

対のリスト

連想配列

JMPスコープ演算子とR

R Send()関数によって、JMPの変数をRに送った場合、Rオブジェクトの名前には、JMPの変数と同じ名前が付けられます。たとえば、dtというJMP変数をRに送ると、dtという名前のRオブジェクトが作成されます。コロンおよび2重コロンのスコープ演算子(:および::)は、Rオブジェクト名に使用できないため、次のように変換されます。

1重コロンのスコープ演算子はピリオド(.)に置き換えられます。

たとえば、nsref:dtをRに送ると、nsref.dtという名前のRオブジェクトが作成されます。

2重コロンのスコープ演算子(グローバル変数を指定)は無視されます。

たとえば、::dtをRに送ると、dtという名前のRオブジェクトが作成されます。

R Send()でのR Name()の使用

R Send()R Name()オプションには、有効なRオブジェクト名を引用符付き文字列で指定します。Rに送られたJMPオブジェクトは、指定の名前のRオブジェクトになります。例:

R Send( jmp_var_name, R Name( "r_var_name") );
R Submit( "print(r_var_name)" )

次の例は、Here名前空間内に変数x、グローバル名前空間内に変数y、そしてどの名前空間にも明示的に参照されない変数zを作成します。変数zは、Names Default To Here(1)がオンでない限り、デフォルトでグローバルに設定されます。これらの変数は、その後、Rに渡されます。

Here:x = 1;
::y = 2;
z = 3;
 
R Init(); // R接続を開始する
 

/* Here変数をRに送る

Here:xはRオブジェクトのHere.xとなる */

R Send( Here:x );
 

/* JMPログの出力では、元のJMP変数の参照であるHere:xが使用される */

R Submit( "print(Here.x)" );
 
R Send( ::y ); // ::yはRオブジェクトのyとなる
R Submit( "print(y)" );
 

// Rオブジェクトに別の名前をつけるには、R Name()オプションを使用する

R Send( Here:x, R Name( "localx" ) );
 

/* R Send()コマンドをR Nameオプションとともに使用すれば、JMP変数"Here:x"に相当するRオブジェクト"localx"が作成できる。この場合も、ログには元のJMP変数名が表示される。*/

R Submit( "print(localx)" );
R Send( z ); // zはRオブジェクトzとなる
R Submit( "print(z)" );
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).