JSL で既存の DisplayBox を変更する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Fit Model() ダイアログの出力を変更して、予測 R2 を [適合の概要] テーブルに含めるボタンを作成しようとしています。現在のウィンドウを取得してから、PRESS 統計を有効にする必要があります。この後は簡単で、コンテスト メニューから PRESS 統計を既に有効にしていれば、ほとんどの場合は機能します。また、Fit Model ダイアログを自分でコーディングし、2 行目を使用して PRESS 統計を有効にしてから、それをレポートに送信しても機能します。私が直面している問題は、Current Window() を取得すると DisplayBox が取得され、プラットフォームに処理を指示する方法がないことです。スクリプトを取得してウィンドウを作成し、元のウィンドウを閉じて新しいウィンドウを実行することを検討しましたが (画面のちらつきはそれほど悪くありません)、<< Get スクリプトは、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: 既存の DisplayBox を JSL で変更する方法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: 既存の DisplayBox を JSL で変更する方法なるほど、分かりました。 <
理解するのに少し時間がかかりましたが、<
dt =開ける( "$ENGLISH_SAMPLE_DATA/Big Class.jmp" ) ;
モデルをあてはめる(
よ( :重さ) 、
効果( :身長) 、
人格(標準最小二乗法) 、
強調(最小限のレポート) 、走る
) ;
フィット=窓( 「大きなクラス: 最小二乗に合わせる」 )[アウトラインボックス( 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 オブジェクトではなく Fit Model オブジェクトに送信する必要があると思います。 以下の例のように (実行してから [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 )] <<マトリックスとして取得;
新しい価値= J ( 1 、 6 ) ;
新しい価値[ 1 :: 2 ] =値[ 1 :: 2 ] ;
新しい価値[ 6 ] = predR ;
新しい価値[ 3 :: 5 ] =値[ 3 :: 5 ] ;
dg [文字列ボックス( 1 )] <<要素を追加( 「Rスクエアプレド」 ) ; // Add Values が機能しないため、並べ替え
dg [番号列ボックス( 1 )] <<設定値(新しい価値) ;
)
) ;
JSL で既存の DisplayBox を変更する方法明確にするために、最初の行 dg = Current Window();ログに DisplayBox[] を返します。JSL 経由でウィンドウのコンテキスト メニューにアクセスしてツリー構造に追加する方法を探しているので、後でそれらを取得できます。具体的には、PRESS(1) にフラグを付ける方法です。ありがとう!