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

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

Table 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();

Table 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()でJMPからRに送るオブジェクトに別の名前を付けたい場合には、R Name()オプションにその別の名前を引用符付き文字列で指定してください。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).