Skript wird sequentiell ausgeführtIch versuche, meine Speicherschätzungen von meiner Überlebensplattform aus zu erstellen und dann die Schätzungen in der neu erstellten Tabelle abzurufen. Das Problem besteht darin, dass nicht gewartet wird, bis die Survival-Tabelle erstellt ist, bevor der Ausgabeausdruck ausgeführt wird. Ich habe versucht, fertig zu stellen, zu warten, verschiedene Befehle usw. ... und ich kann das nicht zum Laufen bringen, irgendwelche Vorschläge? Ich habe JMP 16.0 mit MacBook.
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);AnalytikMac OSSkripterstellungBetreff: Skript wird sequentiell ausgeführtErhalten Sie eine Fehlermeldung im Protokoll von JMP? In dem Beispiel, das Sie gegeben haben, haben Sie den Namen Sur für den Ausdruck und werten dann Survival aus, nicht sicher, könnte das das Problem sein? Es sollte zu einem Fehler wie dem folgenden führen: Name Unresolved: Survival in access or evaluation of 'Survival' , Survival/*###*/
Dies scheint gut zu funktionieren, nachdem Eval (Survivor) -> Eval (Sur) geändert wurde:
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);
In den ziemlich seltenen Fällen, in denen JMP eine Verzögerung hinzufügen muss, reicht wait(0) normalerweise aus (und wenn Sie viele Formeln haben << Formeln ausführen könnte helfen).
Betreff: Skript wird sequentiell ausgeführtIch glaube, ich verstehe, was Sie versuchen - effektiv möchten Sie das Eingabefenster für die Überleben() Plattform zu sein Modal - Sie möchten, dass die Ausführung des Skripts blockiert wird, bis das Fenster geschlossen wird.Sie können dies tun, indem Sie explizit ein Fenster definieren, anstatt sich auf das Standardverhalten zu verlassen.Hier habe ich ein modales Fenster erstellt, das die Eingabefelder enthält, dann nehme ich jede Eingabe und erstelle die Überleben() Ausdruck mit den richtigen Eingaben.
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>