JSLで既存のDisplayBoxを変更する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Fit Model()ダイアログの出力を変更して、PredictedR2をSummaryofFitテーブルに含めるボタンを作成しようとしています。現在のウィンドウを取得してから、PRESS統計をアクティブにする必要があります。この後、それは十分に簡単であり、コンテストメニューからPRESS統計をすでにアクティブにしている場合はほとんど機能します。また、Fit Modelダイアログを自分でコーディングし、2行目を使用してPRESS統計をアクティブにしてから、レポートに送信する場合にも機能します。私が遭遇している問題は、Current Window()を取得すると、プラットフォームに処理を指示する方法がないDisplayBoxを取得することです。スクリプトを取得してウィンドウを作成し、元のウィンドウを閉じて新しいウィンドウを実行することを検討しました(1つのクイック画面のちらつきはそれほど悪くありません)が、<< GetScriptはFitModel()スクリプトではなくツリー構造を返します。私が見逃している簡単なものはありますか?それが助けになるなら、私はこれをJMP9で書いています。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で既存のDisplayBoxを変更する方法MS-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を変更する方法なるほど、分かりました。 << getスクリプトが「ツリー」を提供する理由は、fit-least-squares run(またはそれが呼ばれるもの)オブジェクトではなく、表示ボックスがアドレス指定されるためです。 少なくとも私はそう思う。
理解するのに少し時間がかかりましたが、<< get scriptable objectを使用する以下のアプローチは、手作業で行われたレポートウィンドウ内の実際の分析の最上位オブジェクトを正しく識別しているようです。 単純なレポートウィンドウでは機能するはずですが、たとえば「グループ」を使用する場合など、複数のトップレベルのアウトラインを持つウィンドウでは、さらに検討しないと機能しない場合があります。
dt =開ける(( "$ ENGLISH_SAMPLE_DATA / Big Class.jmp" )。 ;
フィットモデル((
Y (( :重さ)。 、
効果(( :身長)。 、
個性((標準最小二乗)。 、
強調((最小限のレポート)。 、走る
)。 ;
フィット=窓(( 「ビッグクラス:最小二乗法に適合」 )[アウトラインボックス(( 1 )] <<スクリプト可能なオブジェクトを取得する;
フィット<<プレス(( 1 )。 ;
印刷((フィット<<スクリプトを取得)。 //スクリプトを期待どおりに機能させます!
JSLで既存のDisplayBoxを変更する方法MS-迅速な返信ありがとうございます!問題は、これが私が望むように展開するために、以下の部分を含めることができないということです。
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インターフェイスを使用してモデルを適合させ、重要な情報を追加した後、ツールバーから簡単に押すことができるようにしたいと考えています。
私を混乱させているのは、JSLがウィンドウを作成するのではなく、JMPがウィンドウを作成した場合、JSLを介してウィンドウのコンテキストメニューにアクセスできないことです。JSLを介してトップレベルのメニューに簡単にアクセスできますが、コンテキストメニューにはアクセスできません。また、<< Get ScriptメッセージがJSLスクリプトではなくウィンドウのツリー構造を返し、コンテキストメニューが提供するようにウィンドウを作成する理由もわかりません。JMPが私が望むことを実行できることを私は知っています、私はJSLからそれらをロックされているようです。
JSLで既存のDisplayBoxを変更する方法何をしようとしているのか正確にはわかりませんが、Press(1)メッセージをWindowオブジェクトではなくFitModelオブジェクトに送信する必要があると思います。 以下の例のように(実行してから「押す」をクリックします)。 JMP9(Mac)で動作します。
dt =開ける(( "$ English_Sample_Data / Tiretread.jmp" )。 ;
フィット=フィットモデル((
Y (( :摩耗)。 、
効果(( :シリカ、 :シラン)。 、
個性((標準最小二乗)。 、
強調((最小限のレポート)。 、
走る((
:摩耗<< {{予測による実際のプロット(( 0 )。 、回帰をプロットする(( 0 )。 、予測による残差プロット(( 0 )。 、
プロット効果の活用(( 0 )}
)。
)。 ;
dg =報告((フィット)。 ;
dg <<付加する((
ボタンボックス(( "押す" 、
フィット<<押す(( 1 )。 ;
押す= dg [ナンバーコルボックス(( 「RMSEを押す」 )] <<マトリックスとして取得;
押す=押す[ 1 ] ;
ss = dg [ナンバーコルボックス(( "平方和" )] <<マトリックスとして取得;
lastrow = N行(( ss )。 ;
sst = ss [ lastrow ] ;
predR = 1 -押す/ sst ;
値= dg [ナンバーコルボックス(( 1 )] <<マトリックスとして取得;
newvalues = J (( 1 、 6 )。 ;
newvalues [ 1 ::: 2 ] =値[ 1 ::: 2 ] ;
newvalues [ 6 ] = predR ;
newvalues [ 3 ::: 5 ] =値[ 3 ::: 5 ] ;
dg [ストリングコルボックス(( 1 )] <<要素を追加(( 「RSquarePred」 )。 ; //値の追加が機能しないため、並べ替え
dg [ナンバーコルボックス(( 1 )] <<設定値(( newvalues )。 ;
)。
)。 ;
JSLで既存のDisplayBoxを変更する方法明確にするために、最初の行、dg = Current Window();ログにDisplayBox[]を返します。JSLを介してウィンドウのコンテキストメニューにアクセスし、ツリー構造に追加して、後でそれらを取得できるようにする方法、具体的にはPRESS(1)にフラグを立てる方法を探しています。ありがとう!