データ テーブル スクリプトは、保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能します。こんにちは、みんな、
テーブル スクリプトがメイン スクリプトで設定された変数を動的に考慮しない理由が少しわかりません。そのため、数値は for ループの実行に基づいて動的に選択されるのではなく、標準値を取得しています。ご協力いただければ幸いです。以下は、一般的にテーブル スクリプトと呼ばれていない場合に備えて、私が参照しているテーブル スクリプトです。

左側のメイン JSL スクリプトを見てください。ハイライト表示されたコードが動的に動作します。「vc スクリプト」がデータ テーブルに保存されると、スクリプトがスクリーンショットの右側に開きます。「重み」と「カウント」が遭遇する最初の値は、埋め込まれている for ループのすべてのループに設定されているようです。これを動的にする方法はありますか? 列を文字列または数式にすることに関する投稿しか読んだことがありませんが、このケースには当てはまらないと思います。

保存されたスクリプトがこれらの値をハードコードしないように、メインの jsl コードを変更するには、ご協力いただければ幸いです。よろしくお願いします。
自動化とスクリプト基本的なデータ分析とモデリングデータの探索と視覚化品質およびプロセスエンジニアリング結果の共有と伝達ウィンドウズRe: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能しますVC スクリプトで評価したい特定の値がすべてではない場合はありますか?
Re: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能します左上から、サブセット化されたデータ テーブル「vc depo summary subset」を作成します。これは、for ループごとに変数 (この場合は depo) でサブセット化されますが、例として depo = {"A", "B", "C"} を使用します。左側の jsl スクリプトでは、A によるサブセット化によって重み = [50, 50, 50, 50, 50]、カウント = [16, 20, 19, 20, 20] になり、B または C によるサブセット化によって異なる重みとカウントが与えられます。左側のスクリプトは適切に動作します。ただし、データ テーブルに保存されている同じスクリプトを開くと、重み/カウントが A の値にデフォルト設定され、変数は (左側のように) そのまま残り、それぞれ B と C の正しい重み/カウントが保持されます。右側にハードコードされた値が表示されるのではなく、変数として保持する方法がわかりません。
Re: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能します私の理解が正しければ、一部の変数の評価を防止したいということですね。これを行う 1 つの方法は、複数の Expr() を使用することです。
As you didn't share the script, I will try to use very simple example which hopefully demonstrates what you can do. Compare the script, table script and script which is inside frame box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
script = EvalExpr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(Expr(Expr(vals)))},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(Expr(Expr(vals)))), i++,
H Line(Expr(Expr(Expr(vals))));
);
);
);
))
);
Eval(EvalExpr(
dt << New Script("Test", Expr(Name Expr(script)));
));


Re: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能しますありがとう、Jarmo。うまくいきました!
変数を 1 つではなく 3 つの Expr() 関数で 3 重に囲まなければならない理由はありますか?
Re: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能しますはい、これは JMP での式の評価の仕組みです ( スクリプト ガイド > プログラミング方法 > 高度な式、マクロ、リストの「式の引用と引用解除」)。
この場合、式を構築するときに EvalExpr を使用して 2 つの式を評価し、さらにテーブル スクリプト用に 1 つ余分に残しておき、評価せずに Expr として保持します (合計 3 つ必要)。このようなものを構築する方法は他にもありますが、Expr() をさらに追加すると役立つ場合があることを知っておくとよいでしょう。
たとえば、これは3つのExpr()を必要とせずに同様のスクリプトになると思います。
script = Substitute(
Expr(
vals = [55, 60, 70];
Eval(
Eval Expr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = _valsexpr_},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(_valsexpr_), i++,
H Line(_valsexpr_)
);
)
)
)
);
),
Expr(_valsexpr_), Name Expr(Expr(vals))
);
Re: データ テーブル スクリプトは保存されたスクリプトの新しい値を使用するために動的に更新されませんが、メインの jsl スクリプトからは機能しますなぜ
script = Expr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(vals)},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(vals)), i++,
H Line(Expr(vals));
);
);
);
))
);?