スクリプトを順次実行サバイバルプラットフォームからSaveEstimatesを作成しようとしています。次に、新しく作成したテーブルで見積もりを取得します。 問題は、出力式を実行する前に、サバイバルテーブルが作成されるまで待機しないことです。 終了、待機、別の注文などを試しましたが、これを機能させることができません、何か提案はありますか? 私はMacBookを搭載したJMP16.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);分析マックOSスクリプティング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>