資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行大家好,
我有點困惑為什麼表腳本不動態考慮主腳本中設定的變數。因此,這些數字將獲得標準值,而不是基於 for 迴圈運行的動態選擇。任何幫助將不勝感激。下面是我提到的表腳本,以防它通常不會被稱為表腳本。

請看一下左側的主 JSL 腳本,其中突出顯示的程式碼動態運行。當「vc腳本」儲存到資料表中時,腳本將開啟到螢幕截圖的右側。似乎「權重」和「計數」遇到的第一個值是為其嵌入的 for 循環的所有每個循環設定的。我只讀過有關製作列字串或公式的帖子,但我認為這不適合這種情況。

如果您能提供任何幫助來更改主要 jsl 程式碼,以便儲存的腳本不會對這些值進行硬編碼,我們將不勝感激。先致謝!
自動化和腳本編寫基礎資料分析與建模數據探索和視覺化品質和工藝工程分享和交流成果視窗回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行您的 vc 腳本中是否有一些您希望評估但不是全部的特定值?
回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行從左上角開始,我建立了一個子集資料表“vc depo 摘要子集”,在本例中為depo,每個for 迴圈子集由一個變數組成,但為了舉例:depo = {“A”, “B”,“ C”}。在左側的jsl 腳本中,按A 進行子集化給出權重= [50, 50, 50, 50, 50] 和計數= [16, 20, 19, 20, 20],按B 或C 進行子集化給出不同的權重和計數。左邊的腳本工作正常。但是,當我打開儲存到資料表中的相同腳本時,它會將權重/計數預設為 A 的值,而不是保留分別攜帶 B 和 C 的正確權重/計數的變數(如左側所示) 。我不確定如何將其保留為變量,而不是看到右側的硬編碼值。
回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行如果我理解正確的話,您想要阻止對某些變數的評估。執行此操作的一種選擇是使用多個 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)));
));


回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行謝謝賈莫,這成功了!
我們必須用三個 Expr() 函數而不是 1 個函數對變數進行三重封裝,這是否有原因?
回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 jsl 腳本執行是的,因為這正是 JMP 上表達式求值的工作原理( 腳本指南 > 程式設計方法 > 高階表達式、巨集和清單「引用和取消引用表達式」)。
在這種情況下,在構建將評估其中兩個的表達式時,您兩個都有EvalExpr,並且您希望為表腳本保留一個額外的值,以便將其保留為Expr 而不是被評估(因此我們總共需要三個)。還有其他方法可以建立類似的東西,但是了解添加更多 Expr() 有時會有所幫助是很好的。
我認為例如這應該會產生類似的腳本,而不需要三重 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))
);
回覆:資料表腳本不是動態更新以使用已儲存的腳本中的新值,而是從主 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));
);
);
);
))
);?