JSL: 新しいスクリプトコマンドの奇妙な動作に関するヘルプこんにちは、スクリプターの皆さん
(W11、64ビット、JMP Pro 18.1.1)
実行中のスクリプトで奇妙な動作が発生しています。スクリプトはいくつかの処理を行いますが、その一つはデータテーブルに追加する新しいスクリプトを作成することです。新しいスクリプトにいくつかの変数を渡して、元のJSLとは別のデータテーブルで実行する必要があります。データテーブルに2つの新しいスクリプトを追加しています。1つはGraph Builderでデータを視覚化するためのスクリプト(問題なく動作します)、もう1つはDistributionプラットフォームでデータを視覚化するためのスクリプトです。
以下は、グラフ ビルダー スクリプトを追加する JSL です (非常にうまく機能し、まさに私が望んでいることを実行します)。
Eval(
Eval Expr(
DOETable << New Script(
"Visualize Graphic Results",
Current Data Table()<
<GRAPH builder=""></GRAPH>
<P>同様に、分布視覚化のスクリプトは次のようになりますが、これは意図したとおりに動作しません。</P> <CODE class=" language-jsl">Eval(
Eval Expr(
DOETable << New Script(
"Visualize Distribution Results",
Current Data Table()<
<DISTRIBUTION></DISTRIBUTION> <P>親スクリプトを実行すると、2 つの新しいテーブル スクリプトが追加されます (この場合も GB スクリプトは正常に動作します)。ただし、データ テーブル (緑の三角形) から Distribution スクリプトを実行しようとすると、結果が表示される代わりに、Distribution プラットフォーム ウィンドウが開きます。</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_0-1749735408022.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76843i57FDB333BC7A2A58/SDF1_0-1749735408022.png" role="button" title="SDF1_0-1749735408022.png" alt="SDF1_0-1749735408022.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76845i1E9571AFD2ACBFEF/SDF1_2-1749735475257.png" role="button" title="SDF1_2-1749735475257.png" alt="SDF1_2-1749735475257.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P>注: 無実の人々を保護するために名前は削除されています ;-)。</P> <BR /> <P>まず、これは実行されるべきではなく、実際には新しいスクリプトにレイアウトされているすべてのディストリビューションが表示されるはずです (親 JSL でスクリプトを段階的に実行すると、機能します)。</P> <BR /> <P>非常に奇妙な点があります。データテーブル(スクリプト編集)で新しいスクリプトを開き、「実行」をクリックすると、意図したとおりに動作します。</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76846iA545DE7F81730152/SDF1_3-1749735688131.png" role="button" title="SDF1_3-1749735688131.png" alt="SDF1_3-1749735688131.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76847i5746AC9063CF5B38/SDF1_4-1749736010450.png" role="button" title="SDF1_4-1749736010450.png" alt="SDF1_4-1749736010450.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <BR /> <P>何が間違っているのか分かりません。JSLは動作するのですが、なぜか緑の三角形から実行しようとすると動作しません。理解できません。何か見落としているのでしょうか、それともどこかで呼び出し/コマンドが間違っているのでしょうか?他にもこのような奇妙な動作に遭遇した方はいらっしゃいますか?もしそうなら、どのように回避しましたか?</P> <BR /> <P>どのようなご助力も大歓迎です、ありがとうございます!</P> <BR /> <P>DS</P> <BR /> <BR /> <BR />
<CODE class=" language-jsl">
<LINGO-LABS id="lingo-labs-879578" slang="en-US" mode="CREATE">
<LINGO-LABEL>自動化とスクリプト</LINGO-LABEL>
<LINGO-LABEL>データの探索と可視化</LINGO-LABEL>
</LINGO-LABS>
Re: JSL: New Script コマンドの奇妙な動作に関するヘルプ私の最初の推測は、Column() の使用です。
配信プラットフォームには「列」というひどい名前の引数があります。ここで列がどのように入力されるかに注意してください。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
obj = dt << Distribution(Column(:Age, :Weight));
グラフビルダーと比較して
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Variables(X(:height), Y(:weight)),
Elements(Points(X, Y), Smoother(X, Y))
);
もっと見る...
Column() はグラフビルダーでは使用されず、X()、Y() などが使用されます。
Re: JSL: New Script コマンドの奇妙な動作に関するヘルプおそらくその通りだと思います。evalexprはプラットフォームの列構文を列に変換しようとします。おそらく次のように動作するでしょう。
Expr( Column( DOETable, N Items( ListNames ) ) )
//becomes (untested...)
Column( Expr(DOETable), expr( N Items (ListNames ) ) )
各プラットフォームの構文では、グループ化に関数のような構造がよく用いられますが、プラットフォームが使用する名前が関数名と同じ場合、混乱を招きます。式は式に挿入できる定数に評価される必要があるため、それでも並べ替えが必要になります。
Re: JSL: 新規スクリプトコマンドの奇妙な動作に関するヘルプこんにちは、 @Craige_Halesと@jthi 、
実際のところ、問題は両方の要素が混在していました。まず、Column() 呼び出しを Expr() 呼び出し内に含めるべきではありませんでした。次に、Distribution プラットフォームの列への適切な参照を使用する必要がありましたが、親 JSL 内にデータテーブルスクリプトとして保存しているため、列を :"name"n として参照するだけでは不十分でした。Eval Insert() 内でその列を構築し、Expr() 呼び出し内で Parse() を実行する必要がありました。
最終的に、Distribution プラットフォームで機能したのは次のとおりです。
Eval(
Eval Expr(
Distribution(
Continuous Distribution( Column( Expr( Parse( Eval Insert( ":\!"^ListNames[Nitems(YCols)+1]^\!"" || "n" ) ) ) ) ),
Process Capability( 0 )
)
)
);
これにより、Distribution プラットフォーム用の適切な列名参照が構築され、データテーブルに保存可能な実行可能スクリプトが作成できました。少し面倒ではありますが、問題なく動作します。これが重要なのです。
ご提案ありがとうございます!
DS