スクリプトを順番に実行する私は、サバイバル プラットフォームから保存推定値を作成し、新しく作成したテーブルで推定値を取得しようとしています。問題は、出力式を実行する前に、サバイバル テーブルが作成されるまで待機しないことです。終了、待機、異なる順序などを試しましたが、うまくいきません。何か提案はありますか? 私は MacBook で JMP 16.0 を使用しています。
Names Default To Here( 0 );
Clear Log();
dt = Current Data Table();
If( Not( Is Scriptable( dt ) ),
dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
If( dtsel == "",
Stop(),
Try( dt = Open( dtsel ), Stop() )
);
);
Sur = Expr(
Obj = dt << Survival(
Failure Plot( 1 ),
Show Points( 1 ),
Show Shaded Simultaneous CI( 1 ),
Show Simultaneous CI( 1 ),
Weibull Fit( 1 )
//Save Estimates
);
dtname = Data Table( dt ) << Get Name;
Show( dtname );
obj << Save Estimates;
wait(1);
);
Eval( Survival );
Output = Expr(
dt2 = Data Table( dtname || " Survival");
columnnamegroup = Column( dt2, 1 ) << Get Name;
Groups = Column( dt2, columnnamegroup ) << Get As Matrix;
Show( Groups );
);
Eval(Output);コンテンツの編成データのブレンドとクリーンアップmacOS大量カスタマイズ信頼性分析結果の共有と伝達Re:スクリプトを順次実行JMPのログにエラーメッセージが表示されていますか? あなたが与えた例では、表現にSurの名前を付けてから、Survivalを評価しますが、それが問題になる可能性はありますか? 次のようなエラーが発生するはずです:Name Unresolved:Survival in access or Evaluation of'Survival'、Survival / * ### * /
これは、Eval(Survivor)-> Eval(Sur)を変更した後は正常に機能するようです。
Names Default To Here(0);
dt = Open("$SAMPLE_DATA/Rats.jmp");
Sur = Expr(
obj = dt << Survival(Y(:days), Censor(:Censor), Grouping(:Group));
dtname = Data Table(dt) << Get Name;
obj << Save Estimates;
);
Eval(Sur);
Output = Expr(
dt2 = Data Table(dtname || " Survival");
columnnamegroup = Column(dt2, 1) << Get Name;
Groups = Column(dt2, columnnamegroup) << Get As Matrix;
Show(Groups);
);
Eval(Output);
非常にまれなケースでは、JMPで遅延を追加する必要がありますが、通常はwait(0)で十分です(数式がたくさんある場合) <<数式を実行する役立つかもしれません)。
Re:スクリプトを順次実行私はあなたがやろうとしていることを理解していると思います-事実上あなたはSurvival()あるべきプラットフォームモーダル--ウィンドウが閉じるまでスクリプトの実行をブロックする必要があります。これを行うには、デフォルトの動作に依存する代わりに、ウィンドウを明示的に定義します。ここでは、入力フィールドを含むモーダルウィンドウを作成し、次に各入力を取得して、 Survival()正しい入力の式。
Names Default To Here( 1 );
dt = Current Data Table();
If( Not( Is Scriptable( dt ) ),
dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
If( dtsel == "",
Stop(),
Try( dt = Open( dtsel ), Stop() )
);
);
dtname = Data Table( dt ) << Get Name;
validated = 0;
New Window( "Inputs",
<<MODAL></MODAL>Re: スクリプトを順次実行するはい、これは完全に機能します! 過去にモーダル ウィンドウを作成したことがありますが、プラットフォームでそれを行う方法がわかりませんでした。 いくつかの方法を試しましたが失敗しました。 新しいウィンドウを使用することだけを考えていなかったと思います。
ありがとうございました!
Re: スクリプトを順次実行するそれは私のタイプミスで、以前は正しかったのですが、2 つが一致してもうまくいきませんでした。 私は待ってみましたが、うまくいきませんでした。 数式はありません。スクリプト全体がコピーされました。
Re: スクリプトを順次実行する私はずっと好きです@ErraticAttackの解決策ですが、質問を正しく理解したので、ここで時々機能する別の方法があります。 On Close() をプラットフォーム ウィンドウに設定すると、必要なものがすべて実行されます。 これは、ウィンドウ名に依存するため、非常にエラーが発生しやすくなりますが、実行前と実行後にどのウィンドウが存在するかを比較することで、もう少し堅牢にすることができます。
Names Default To Here(0);
dt = Open("$SAMPLE_DATA/Rats.jmp");
Sur = Expr(
obj = dt << Survival();
Window("Survival / Reliability") << On Close(Output);
);
Eval(Sur);
Output = Expr(
dtname = Data Table(dt) << Get Name;
For Each({window_name}, Get Window List() << Get Window Title,
If(Contains(window_name, Eval Insert("^dtname^ - Survival of ")),
cur_w = Window(window_name);
break();
);
);
obj = cur_w[OutlineBox(1)] << Get Scriptable Object;
obj << Save Estimates;
dt2 = Data Table(dtname || " Survival");
columnnamegroup = Column(dt2, 1) << Get Name;
Groups = Column(dt2, columnnamegroup) << Get As Matrix;
Show(Groups);
);