Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?私は次のことを行うスクリプトを書いています:
- フィットモデルウィンドウを開き、
- ユーザーが[モデルに合わせる]ウィンドウのマクロやその他の機能を使用してデータを入力できるようにします。
- ユーザーが[実行]をクリックできるようにします。この時点で、時間のかかる可能性のある計算が実行され、レポートが作成されます。
[実行]をクリックしたときに実行される計算は、[実行]ボタンに保存されているスクリプトによって生成されます。このスクリプトは、ユーザーが作成するレポートを生成しますすべき見る。ただし、スクリプトが[実行]ボタンに追加されているため、目的のレポートが表示されますが、その後に、実行が独自に生成する最小二乗法レポートが続きます。Fit Least Squaresレポートは、ユーザーにとって無意味です。
以下のスクリプトは、問題を示しています。 そのスクリプトでは、[実行]ボタンの式 "runExpr"は、クローンデータテーブルを作成するだけです。これは、図を簡略化するためです。実際のスクリプトでは、その式(runExpr)は、[モデルの適合]ウィンドウに入力された効果に基づいて多くの分析を実行します。 また、実際のスクリプトでは、ユーザーはFitModelウィンドウにインタラクティブにデータを入力します。便宜上、以下のスクリプトで[モデルの適合]ウィンドウにデータを入力しました。
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr);
[実行]をクリックすると、ユーザーと同じようにクローンテーブルが表示されますが、上部のウィンドウは[実行]コマンドによって生成された最小二乗法レポートです。そのレポートが表示されないようにしたいと思います。
そのために:
- runExprでThrow()とStop()を使用しようとしましたが、役に立ちませんでした。
- モーダルウィンドウの使用を検討しましたが、モデルのフィットウィンドウにマクロ機能が必要であり、モーダルウィンドウのヘルプを作成する方法がわかりません。
- Fit Least Squaresレポートに対処するために私が考えることができる唯一の方法は、以下に示すように、スクリプトにタイミングループを追加することです。 しかし、これには危険が伴います。runExprが完了するまでにかかる時間を知る方法はありません。ユーザーが[実行]をクリックしないことを決定した場合、スクリプトはタイムアウトするまで実行を続けます。
どんな考えや助けも大歓迎です!
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
fm_Flag = 1
);
fm_Flag = 0; // Sets flag for timing
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr; fm_Flag = 1 );
For( i = 1, i <= 100, i++,
If(fm_Flag < 1, Wait(0.5), windowsopen = Get Window List(); windowsopen[nItems(windowsopen)] << Close Window; Stop() )
);
スクリプティングRe:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?[実行]ボタンボックスに添付するスクリプトを変更する方法がわかりませんが、後でウィンドウを見つけて閉じることができます。 この図を参照してください。
fm = Current data Table() << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" )
);
fls = fm << Run;
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);
Re:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?マーク、ありがとう。でも、これは私の状況ではうまくいかないと思います。ユーザーは、[モデルの適合]ウィンドウにデータを入力する必要があります。ウィンドウコンポーネントをスクリプトに追加すると、ユーザーがFitModelウィンドウにデータを入力する前に実行されます。したがって、ユーザーが[実行]をクリックすると、スクリプトのその部分は「終了」します。私の投稿の2番目のスクリプトを参照して、提案している方針に沿った非常にエレガントでない回避策を確認してください。ユーザーがFitModelにデータを入力するのにかかる時間と、[実行]ボタンでスクリプトを実行するのにかかる時間を考慮する必要があります。
Re:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?あなたは正しいです。 イラストを変更しようとしましたが、ボタンボックスに添付されているスクリプトは、最小二乗法レポートが作成される前に評価されるため、効果がありません。
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
// undesired report
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
Report( fm )[ButtonBox(9)] << Set Script( run expr );
// nothing after this point
Re:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?そうです、ボタンボックスのスクリプトは、[実行]ボタンの組み込みの動作が実行される前に実行されるようです。
この小さな問題は厄介です! アクション(実行ボタンを押すなど)が発生するまで、スクリプトの実行を保留する方法が必要です。 または、組み込みの動作の実行を防ぐためです(ただし、前述したように、runExprにThrowとStopを配置しても機能しませんでした)。
助けてくれてありがとう、マーク。Re:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?[モデル仕様]ダイアログボックスはどれくらい必要ですか? 私は仕方がないのですが、そのステップをあなたの正確なニーズに合わせた新しいウィンドウに置き換えるほうがよいと思います。この投稿の例が役立つかもしれません:
https://community.jmp.com/t5/JMPer-Cable/Prompting-for-columns-totally-modally/ba-p/189647
[モデル仕様]ウィンドウを使用する場合は、ユーザーに新しいボタンをクリックしてクリックすることができます。
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
// Show error if user clicks the wrong button
(fm << XPath("//ButtonBox[@title='Run']"))[1] << Set Script( New Window( "Use other bottom",
Text Box("Woops...\!n\!nPlease use the button at the bottom of the fit model dialog to launch this script.")));
// Button the user should click on
(fm << XPath("//OutlineBox"))[1] << Append(Button Box("Launch custom script", run expr; fm << Close Window;));<BR />
Re:Run in Fit Modelがレポートを生成しないようにするにはどうすればよいですか?Fit Least Squaresプラットフォームが必要ないのに、なぜFit Modelダイアログを使用しているのですか? あなたが望むことを達成する別の方法があるかもしれません。