你好,
這是我遇到問題的腳本的表示:
For(l = 0, l <= n, l++, Dispatch({"Normal Quantile Plot"}, "2", ScaleBox, {Format("Best", 6), AddRefLine(l/100, "Dotted", "Black", Char(l) || "/100", 1), ) ) ) ); rep = Eval(EvalExpr(ow)) << Report;n = 100;
ow = Expr(
OneWay(Y(colPara), X(splitPara),
MeansAndStdDev(0), AllGraphs(0), LineOfFit(0), StdDevLines(1), Legend(1), PlotQuantileByActual(1),
SendToReport(
Dispatch({}, "Normal Quantile Plot", OutlineBox, {SetTitle("")}),<BR /><CODE class="language-jsl">
所以我正在嘗試創建一個單向圖並將其保存到一個表達式中,該表達式稍後將被評估並轉換為報告。
第一份郵件完成了它預期的任務:
Dispatch({}, "Normal Quantile Plot", OutlineBox, {SetTitle("")})
然而,For 循環不起作用,我認為這與 JMP 處理運行變數的方式以及 Expr/Eval 的工作方式有關。
</CODE></PRE>
<P><CODE class="language-jsl">
這個問題有沒有什麼解決方法或變通方法?
致上最誠摯的問候 
For(l = 0, l <= n, l++, <BR /> Dispatch({"Normal Quantile Plot"}, "2", ScaleBox, {Format("Best", 6), AddRefLine(l/100, "Dotted", "Black", Char(l) || "/100", 1),<BR />)
我會為此建立一個函數,並在該函數中,將 For 循環移到平台運行之外。
我認為這樣的方案或許可行(當然還有很多其他選擇)。
Names Default To Here(1);
create_oneway = Function({dt, colpara, splitpara, n = 100}, {Default Local},
ow = dt << OneWay(
Y(Eval(colPara)),
X(Eval(splitPara)),
MeansAndStdDev(0),
AllGraphs(0),
LineOfFit(0),
StdDevLines(1),
Legend(1),
PlotQuantileByActual(1)
);
rep = ow << report;
For(l = 0, l <= n, l++,
rep << Dispatch(
{"Normal Quantile Plot"}, "2", ScaleBox,
{
Format("Best", 6),
Add Ref Line(l/100, "Dotted", "Black", Char(l) || "/100", 1)
}
);
);
rep << Dispatch({}, "Normal Quantile Plot", OutlineBox, {SetTitle("")});
return(ow);
);
dt = open("$SAMPLE_DATA/Big Class.jmp");
ow = create_oneway(dt, "weight", "age");
Write();
你可以使用Expr,但那樣的話我會用幾個不同的部分來建立表達式。