将脚本添加到 jmp 报告中的 ButtonBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
亲爱的社区
我认为我的问题很简单,但我仍然需要一些帮助。 我使用带有添加模拟器的探查器平台来创建具有多个因素的响应的蒙特卡罗模拟:
我的分析器=分析器(
是( :回复)
) ;
我的分析器<<模拟器(
因素(
因素1 <<随机的(普通的()) ,
因素2 <<随机的(普通的())
) ;
我想向报告窗口中“模拟表格”大纲框下的“制作表格”按钮添加一些功能。 我通过添加脚本来做到这一点。 我想要做的是命名“Make Table”按钮生成的表,并对该表执行一系列操作:
报告(我的分析器)[按钮盒( 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我同意伊恩的观点。 但是,在获得更好的选择之前,作为一种解决方法,您可以考虑添加一个劫持“创建表”功能的新按钮:
报告(我的分析器)[ “模拟到表” ] <<前置(
新按钮=按钮盒( “制作桌子加” ,
报告(我的分析器)[按钮盒( 3 )] <<点击() ;
我的模拟表=当前数据表() ;
)
) ;
请注意,插入新按钮会将原始“制作表格”按钮的引用从 2 更改为 3。
回复:将脚本添加到 jmp 报告中的 ButtonBox我认为下面的脚本只是证实了您发现的行为。 在这种情况下,它看起来像“setScript”添加到预定义的脚本(这似乎合理),但它似乎是前置而不是附加:
名称默认到这里( 1 ) ;
// 测试表
dt =新表( “模拟” ,
添加行( 5 ) ,
新专栏( “X” ,
数字,
“连续的” ,
格式( “最好的” , 12 ) ,
设定值( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
新专栏( “是” ,
数字,
“连续的” ,
格式( “最好的” , 12 ) ,
公式( : X +随机正态( 0 , 0.1 ) )
)
) ;
// 拟合模型
调频= dt <<适合模型(
是( : y ) ,
效果( : X ) ,
性格( 《标准最小二乘法》 ) ,
强调( 《杠杆效应》 ) ,
跑步(
分析器(
1 ,
置信区间( 1 ) ,
期限价值( X ( 3 ,锁( 0 ) ,展示( 1 ) ) ) ,
模拟器(
1 ,
因素( X <<随机的(普通的( 3 , 0.8 ) ) ) ,
回应( y <<无噪音)
)
) ,
: y << {不合适( 0 ) ,按预测绘制实际情况( 1 ) ,按预测绘制残差图( 1 ) ,情节效应杠杆( 1 )}
)
) ;
// 定义示例脚本
做一点事=
表达式(
嘟() ;
为了(我= 1 ,我<=表格() ,我++,打印(我,数据表(我) <<获取名称)) ;
) ;
// 将示例脚本分配给按钮(JMP 似乎前置到已经存在的脚本?)
报告(调频)[按钮盒( 5 )] <<设置脚本(做一点事) ;
也许将此线程发送到support@jmp.com得到明确的答案?