数据表脚本不会动态更新以使用已保存脚本中的新值,但可以从主 jsl 脚本运行大家好,
我有点困惑,为什么表格脚本不动态考虑主脚本中设置的变量。因此,数字得到的是标准值,而不是基于 for 循环运行的动态选择。任何帮助都将不胜感激。以下是我所指的表格脚本,以防它通常不被称为表格脚本。

请查看左侧的主要 JSL 脚本,其中突出显示的代码动态工作。当“vc 脚本”保存到数据表时,脚本会在屏幕截图的右侧打开。似乎“权重”和“计数”遇到的第一个值会为其嵌入的 for 循环的所有每个循环设置。有没有办法让它动态化?我只读过关于将列设为字符串或公式的帖子,但我认为这不适合这种情况。

任何帮助都将不胜感激,以修改主 jsl 代码,这样保存的脚本就不会对这些值进行硬编码。提前致谢!
自动化和脚本基础数据分析与建模数据探索与可视化质量与工艺工程分享和交流结果视窗回复:数据表脚本未动态更新以使用已保存脚本中的新值,但可从主 jsl 脚本运行您的 vc 脚本中是否存在您想要评估但并非全部的特定值?
回复:数据表脚本未动态更新以使用已保存脚本中的新值,但可从主 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 的正确权重/计数。我不确定如何将其保留为变量,而不是在右侧看到硬编码值。
回复:数据表脚本未动态更新以使用已保存脚本中的新值,但可从主 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 脚本运行谢谢 Jarmo,成功了!
我们为什么要用三个 Expr() 函数而不是一个来对变量进行三重封装呢?
回复:数据表脚本未动态更新以使用已保存脚本中的新值,但可从主 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));
);
);
);
))
);?