JMP社区专家,我来自中国。
以下问题描述来自机器翻译。语法可能有点奇怪,请不要介意。
我想创建一个按钮列来编写一些脚本。
我主要使用以下方法来创建按钮列:
cb = Expr(Col Box("Title"));
for each( {v, i}, list,
Insert Into( cb, button box("name", Script...) )
);我在“脚本”中不可避免地会使用诸如“v”、“I”等变量,但是我发现这些变量在“脚本”中总是以变量的形式存在而不是它们的实际值,这导致我的脚本无法正常工作。
我尝试使用 Expr()、Eval() 和其他函数将变量转换为实际值,但无法获得预期的效果。
我使用 BigClass.jmp 样本数据模拟了类似的场景。
假设这些学生正在参加某种比赛,需要按照年龄进行分组。我想创建一个包含学生姓名的按钮列,然后单击该按钮以显示他们对应的组。
示例脚本如下:
Names Default To Here( 1 );
aa_AgeGroup = [10 => "Age Group 1",
11 => "Age Group 1",
12 => "Age Group 1",
13 => "Age Group 1",
14 => "Age Group 2",
15 => "Age Group 2",
16 => "Age Group 2",
17 => "Age Group 2"];
dt = Open( "$sample_data/big class.jmp" );
list_name = dt:name << Get Values;
list_age = dt:age << Get Values;
cb_button = Expr( Col Box( "Name" ) );
fun = Function( {this, ver_age}, //
New Window( "Age Group", //
<<MODAL></MODAL><CODE class=" language-jsl">I hope my friends can teach me how to make variables stored in the button script as actual values, thank you.
非常感谢您如此有效地帮助我解决我的问题。
我也曾考虑过使用 Expr()、EvalExpr() 和 Eval() 来解决这个问题,但我对这些函数的理解不足以解决问题。
您的解决方案不仅解决了手头的问题,而且让我对这些功能的集成有了更深入的了解。
再次感谢 Jarmo。
您必须将值评估到按钮脚本中。只需将 Eval(EvalExpr()) 和一些 Expr() 添加到脚本中即可解决问题(还有其他选项)
Names Default To Here(1);
aa_AgeGroup = [10 => "Age Group 1",
11 => "Age Group 1",
12 => "Age Group 1",
13 => "Age Group 1",
14 => "Age Group 2",
15 => "Age Group 2",
16 => "Age Group 2",
17 => "Age Group 2"];
dt = Open("$sample_data/big class.jmp");
list_name = dt:name << Get Values;
list_age = dt:age << Get Values;
cb_button = Expr(Col Box("Name"));
fun = Function({this, ver_age}, //
New Window("Age Group", //
<<MODAL></MODAL>