将新脚本从表达式保存到数据表您好……我希望能够通过包含列名的列表在一个窗口中创建多个变异性图表。我可以实时成功运行该功能(感谢其他 JMP 论坛帖子的帮助)。但我还想将脚本保存到数据表中,以便下次打开数据表时,用户只需点击“绿色三角形”即可生成相同的绘图窗口。我快完成了,它确实将一些内容保存到数据表中,但点击绿色三角形后不会生成绘图窗口。如果我右键单击绿色三角形并选择“编辑”,我可以看到它无法生成绘图窗口的原因是整个脚本都用引号括起来了。我不知道如何删除引号。有什么建议吗?
首先,我构建字符串(plotAllStandardExpr)以通过 for 循环中的一系列连接来构建新窗口。
第二行 Eval(Parse(plotAllStandardExpr)) 将成功创建包含所有图表的窗口。
但是 Eval(Substitute(....) 行只是将引用的字符串保存到数据表中。我在 Substitute 函数中尝试了 Eval(Parse(plotAllStandardExpr)),但没有起作用。
Current Data Table(dtSplit_copy);
plotAllStandardExpr = "New Window(\!"Var Charts: All\!", V List Box(";
for(i = 1, i <= NItems(plotcols), i++,
plotAllStandardExpr = plotAllStandardExpr || "Variability Chart(
Y(" || plotcolsString[i] || "),
X( :Split, :Voltage, :tst_temp ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ));"
);
plotAllStandardExpr = plotAllStandardExpr ||"))";
Eval(Parse(plotAllStandardExpr));
Eval(Substitute(Expr(dtSplit_copy << New Script("All Var charts", xxxx)),
Expr(xxxx), Eval(plotAllStandardExpr)));
自动化和脚本数据混合和清理质量与工艺工程回复:将新脚本从表达式保存到数据表您需要使用 Parse() 删除引号(不需要 Eval() 因为您想要表达式)。 下面是几个选项
Names Default To Here(1);
dt = New Table("");
plotcolsString = {"height", "weight"};
plotAllStandardExpr = "New Window(\!"Var Charts: All\!", V List Box(";
For(i = 1, i <= N Items(plotcolsString), i++,
plotAllStandardExpr = plotAllStandardExpr || "Variability Chart(
Y(" || plotcolsString[i]
||
"),
X( :Split, :Voltage, :tst_temp ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ))
,"
);
plotAllStandardExpr = plotAllStandardExpr || "))";
Parse(plotAllStandardExpr);
Eval(EvalExpr(dt << New Script("all var charts", Expr(Parse(plotAllStandardExpr)))));
Eval(Substitute(
Expr(dt << New Script("All Var charts2", _script_)),
Expr(_script_), Parse(plotAllStandardExpr))
);

回复:将新脚本从表达式保存到数据表非常感谢。 两种选择都像宣传的那样有效!