你好,
这是我遇到问题的脚本的表示:
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,但那样的话我会用几个不同的部分来构建表达式。