如何使用 JSL 修改现有的 DisplayBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试创建一个按钮,该按钮将修改拟合模型()对话框的输出,以在拟合摘要表中包含预测 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);Re: 如何使用 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];Re: 如何使用 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 ) ;
sst = ss [拉斯特罗] ;
predR = 1 -按/ sst ;
价值观= dg [编号栏框( 1 )] <<获取矩阵;
新价值观= Ĵ ( 1 , 6 ) ;
新价值观[ 1 :: 2 ] =价值观[ 1 :: 2 ] ;
新价值观[ 6 ] = predR ;
新价值观[ 3 :: 5 ] =价值观[ 3 :: 5 ] ;
dg [字符串列框( 1 )] <<添加元素( “Rsquare Pred” ) ; // 添加值不起作用,因此重新排序
dg [编号栏框( 1 )] <<设定值(新价值观) ;
)
) ;
如何使用 JSL 修改现有的 DisplayBox为了清楚起见,第一行 dg = Current Window();在日志中返回 DisplayBox[]。我正在寻找一种通过 JSL 访问窗口中的上下文菜单的方法,以将内容添加到树结构中,以便稍后获取它们,特别是如何标记 PRESS(1)。谢谢!