如何使用 JSL 修改现有的 DisplayBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试创建一个按钮,该按钮将修改 Fit Model() 对话框的输出,以在拟合摘要表中包含预测 R2。我抓取当前窗口,然后需要激活 PRESS 统计数据。在此之后,它就足够简单了,如果我已经通过竞赛菜单激活了 PRESS 统计数据,那么它基本上可以工作。如果我自己编写“拟合模型”对话框并使用第二行激活 PRESS 统计数据,然后将其发送到报告,它也可以工作。我遇到的问题是,抓取 Current Window() 会抓取 DisplayBox,而无法指示平台执行操作。我考虑只抓取脚本来创建窗口,关闭原始窗口并运行一个新窗口(屏幕快速闪烁并不算太糟糕),但是 << Get Script 返回树结构,而不是 Fit Model() 脚本。我缺少什么简单的东西吗?我正在 JMP 9 中编写此内容,如果有帮助的话。我希望它与 JMP 8 兼容,但这并不重要。谢谢!
dg = Current Window();dg << PRESS; /###/press = dg[NumberColBox("Press RMSE")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];predR = 1-press/sst;values = dg[NumberColBox(1)] << Get as Matrix;newvalues = J(1,6);newvalues[1::2] = values[1::2];newvalues[3] = predR;newvalues[4::6] = values[3::5];dg[StringColBox(1)] << Set Values({"RSquare","RSquare Adj","RSquare Pred","Root Mean Square Error","Mean of Response","Observations (or Sum Wgts)"});dg[NumberColBox(1)] << Set Values(newvalues);回复:如何使用 JSL 修改现有 DisplayBoxMS-Get Scriptable Object完美解决了这个问题!我确实看到“团队”可能会导致问题,但考虑到我们在这里所做的工作类型,我认为这不会是一个真正的问题。非常感谢您引导我找到解决方案!
dg = Current Window();fm = dg[OutlineBox(1)] << Get Scriptable Object;fm << PRESS(1);press = dg[NumberColBox("Press")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];回复:如何使用 JSL 修改现有 DisplayBox好的我明白了。 <
我花了一段时间才弄清楚,但是下面的方法,使用 <
dt =打开( “$ENGLISH_SAMPLE_DATA/大类.jmp” ) ;
适合模型(
是( :重量) ,
效果( :高度) ,
性格(标准最小二乘法) ,
强调(最少的报告) ,跑步
) ;
合身=窗户( 《大类:拟合最小二乘法》 )[大纲框( 1 )] <<获取可编写脚本的对象;
合身<<按( 1 ) ;
打印(合身<<获取脚本) //获取脚本按预期工作!
如何使用 JSL 修改现有的 DisplayBoxMS - 感谢您的快速回复!问题是,为了按照我想要的方式部署,它不能包含以下部分。
fit = Fit Model( Y( :ABRASION ), Effects( :SILICA, :SILANE ), Personality( Standard Least Squares ), Emphasis( Minimal Report ), Run( :ABRASION << {Plot Actual by Predicted( 0 ), Plot Regression( 0 ), Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )} ));dg = Report( fit );
我希望能够将其部署为最终用户的插件,以便在使用典型的 JMP 界面拟合模型后,只需从工具栏中按下即可,并让它附加重要信息。
让我困惑的是,如果 JMP 创建窗口而不是 JSL 创建窗口,我无法通过 JSL 访问窗口的上下文菜单。我可以通过 JSL 轻松访问顶级菜单,但不能访问上下文菜单。另外,我不明白为什么 << Get Script 消息返回窗口的树结构而不是 JSL 脚本来创建它,就像上下文菜单提供的那样。我知道 JMP 可以做我想做的事情,但我似乎被 JSL 锁定了。
如何使用 JSL 修改现有的 DisplayBox我不确定您到底想做什么,但我认为您必须将 Press(1) 消息发送到 Fit Model 对象而不是 Window 对象。 如下例所示(运行然后单击“PRESS”)。 适用于 JMP9 (Mac)。
dt =打开( “$English_Sample_Data/Tiretread.jmp” ) ;
合身=适合模型(
是( :磨损) ,
效果( :二氧化硅, :硅烷) ,
性格(标准最小二乘法) ,
强调(最小报告) ,
跑步(
:磨损<< {按预测绘制实际情况( 0 ) ,绘图回归( 0 ) ,按预测绘制残差图( 0 ) ,
情节效应杠杆( 0 )}
)
) ;
dg =报告(合身) ;
dg <<前置(
按钮盒( “按” ,
合身<<按( 1 ) ;
按= dg [编号栏框( “按 RMSE” )] <<获取矩阵;
按=按[ 1 ] ;
SS = dg [编号栏框( “平方和” )] <<获取矩阵;
拉斯特罗= N 行( SS ) ;
海温= SS [拉斯特罗] ;
预测R = 1 -按/海温;
价值观= dg [编号栏框( 1 )] <<获取矩阵;
新价值观= J ( 1 , 6 ) ;
新价值观[ 1 :: 2 ] =价值观[ 1 :: 2 ] ;
新价值观[ 6 ] =预测R ;
新价值观[ 3 :: 5 ] =价值观[ 3 :: 5 ] ;
dg [字符串列框( 1 )] <<添加元素( “R方普雷德” ) ; // 添加值不起作用,因此需要重新排序
dg [编号栏框( 1 )] <<设定值(新价值观) ;
)
) ;
如何使用 JSL 修改现有的 DisplayBox需要明确的是,第一行 dg = Current Window();在日志中返回 DisplayBox[]。我正在寻找一种通过 JSL 访问窗口中的上下文菜单的方法,以将内容添加到树结构中,以便稍后可以获取它们,特别是如何标记 PRESS(1)。谢谢!
回复:如何使用 JSL 修改现有 DisplayBox我试图设计一个脚本来将脚本保存到打开的“拟合组”窗口的脚本窗口中。换句话说,一个用于抓取脚本的脚本。为此,我需要创建适合组和对象并向其发送消息。手动操作很容易,可以自动化吗?