将脚本添加到 jmp 报告中的 ButtonBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
亲爱的社区
我认为我的问题很简单,但我仍然可以使用一些帮助。 我正在使用带有添加模拟器的分析器平台来创建具有以下几个因素的响应的蒙特卡罗模拟:
MyProfiler =探查器(
是( :回复)
) ;
MyProfiler <<模拟器(
因素(
因素 1 <<随机的(普通的()) ,
因素 2 <<随机的(普通的())
) ;
我想在报告窗口的“模拟到表格”大纲框下的“制作表格”按钮中添加一些功能。 我通过添加脚本来做到这一点。 我想要做的是命名由“制作表”按钮产生的表,并对该表执行一系列操作:
报告( MyProfiler )[按钮框( 2 )] <<设置脚本(
我的模拟表=当前数据表() ;
//在 MySimTable 上执行操作
) ;
问题是'当前数据表'命令被执行前按下按钮时的任何其他操作。 这意味着当前表格不是按“制作表格”按钮生成的表格。 所以这是我的问题:有没有办法在运行'之前执行'内置'按钮功能当前数据表' 命令? 任何给我自动参考生成表的解决方案都将不胜感激。
谢谢
回复:在 jmp 报告中将脚本添加到 ButtonBox你好,
我已与 JMP 开发团队确认,在执行内置功能之前运行脚本是有意的行为。
下面是一个简化示例,演示如何隐藏原始按钮、运行脚本、单击原始(隐藏)按钮,然后运行另一段脚本。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );dt << New Column( "heightplusweight", Formula( :height + :weight ) );
// replace the button in Simulate To Tablex = Profiler( y( :heightplusweight ) );x << Simulator( Factors( Factor1 << Random( Normal() ), Factor2 << Random( Normal() ) ));bb2 = Report( x )["Simulate to Table"][Button Box( 1 )];bb2 << Visibility( "Hidden" ); // new for JMP 12bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button New Window( "Before", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); (this << Sib) << Click; // sib==original button because of < New Window( "After", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); ) ) ));
以此为模型,您可以应用该概念来隐藏并单击旧按钮,然后设置新表的名称:
bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button (this << Sib) << Click; // sib==original button because of < Data Table(1) << Set Name( "New Table Name" ); ) ) ));
我希望这有帮助。
温迪
回复:在 jmp 报告中将脚本添加到 ButtonBox嗨伊恩
感谢您的回复。 我已将此讨论发送给支持团队,只是想看看他们可能会说什么。
回复:在 jmp 报告中将脚本添加到 ButtonBox嗨杰瑞
我对解决方法有类似的想法。 感谢您向我展示如何实施此解决方案。 它完美地工作
回复:在 jmp 报告中将脚本添加到 ButtonBox我同意伊恩。 但是,作为一种解决方法,直到您获得更好的选择,您可能会考虑添加一个劫持 Make Table 功能的新按钮:
报告( MyProfiler )[ “模拟表” ] <<前置(
新按钮=按钮盒( “做表加” ,
报告( MyProfiler )[按钮框( 3 )] <<点击() ;
我的模拟表=当前数据表() ;
)
) ;
请注意,插入新按钮会将对原始制作表按钮的引用从 2 更改为 3。
回复:在 jmp 报告中将脚本添加到 ButtonBox我认为下面的脚本只是确认了您发现的行为。 在这种情况下,它看起来像“setScript”添加到预定义的脚本(这似乎是合理的),但它似乎是前置而不是附加:
名称DefaultToHere ( 1 ) ;
// 测试表
dt =新表( “模拟” ,
添加行( 5 ) ,
新列( “X” ,
数字,
“连续的” ,
格式( “最好的” , 12 ) ,
设定值( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
新列( “是” ,
数字,
“连续的” ,
格式( “最好的” , 12 ) ,
公式( : X +随机法线( 0 , 0.1 ) )
)
) ;
// 拟合模型
调频= dt <<拟合模型(
是( :是的) ,
效果( : X ) ,
性格( “标准最小二乘” ) ,
强调( “效果杠杆” ) ,
跑(
探查器(
1 ,
置信区间( 1 ) ,
期限价值( X ( 3 ,锁( 0 ) ,节目( 1 ) ) ) ,
模拟器(
1 ,
因素( X <<随机的(普通的( 3 , 0.8 ) ) ) ,
回应(是的<<无噪音)
)
) ,
:是的<< {不适合( 0 ) ,按预测绘制实际( 1 ) ,按预测绘制残差( 1 ) ,情节效应杠杆( 1 )}
)
) ;
// 定义示例脚本
做一点事=
表达式(
嘟() ;
为了(一世= 1 ,一世<=表格() ,一世++,打印(一世,数据表(一世) <<获取名称)) ;
) ;
// 将示例脚本分配给按钮(JMP 似乎预先添加到已经存在的脚本中?)
报告(调频)[按钮框( 5 )] <<设置脚本(做一点事) ;
也许将此线程发送到support@jmp.com得到一个明确的答案?