概要
JSLを使用して、リスト内に保持している複数の列名をJMPの各種分析プラットフォームの起動ウィンドウで指定したい、という場合もあるかと思います。
例えば、JMPのサンプルデータ"Pollen.jmp"の全ての列に対し、[分析] > [一変量の分布]で分析を行い、レポートを出力するJSLを書きたいとします。
結論から言いますと、この例のような場合、Eval List()関数を使用する必要があります。
手順
以下は実行するとエラーが発生し、レポートが出力されないスクリプトの例です。
//このスクリプトは説明のために用意した失敗の例です。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Pollen.jmp" );
//サンプルデータ"Pollen.jmp"を開く。
columnlist = dt << Get Column Names( String );
//開いた"Pollen.jmp"の列名を文字列で取得し、リストに入れる。
dt << Distribution( Column( columnlist ) );
//リストに入れた列名の列に対して「一変量の分布」で分析したいが...
このスクリプトを実行すると、サンプルデータ"Pollen.jmp"は開きますが、レポートは出力されません。JMPのメニューで[表示] > [ログ]を選択し、ログを確認すると以下の出力が確認できます。
Distribution , Bad Argument( {columnlist} ), Distribution( /*###*/Column( columnlist ) )へのアクセスまたはその評価中のメッセージ:見つかりません。
このような場合に、Eval List()関数を使用する必要があります。Eval List()関数を使うことでリスト内の項目を評価させることが可能です。今回の"Pollen.jmp"の全ての列に対し、[分析] > [一変量の分布]で分析を行い、レポートを出力する例の場合、以下のようにEval List()関数を使用してスクリプトを書きます。
//このスクリプトは正しい例です。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Pollen.jmp" );
//サンプルデータ"Pollen.jmp"を開く。
columnlist = dt << Get Column Names( String );
//開いた"Pollen.jmp"の列名を文字列で取得し、リストに入れる。
dt << Distribution( Column( Eval List( columnlist ) ) );
//リストに入れた列名の列に対して「一変量の分布」で分析を行う。