如何使用 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)。謝謝!