腳本按順序運行我正在嘗試從我的生存平台創建我的保存估計值,然後在新創建的表中獲取估計值。 問題是它不會等到創建生存表後才執行輸出表達式。 我試過完成、等待、不同的訂單等......我無法讓它工作,有什麼建議嗎? 我有 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);分析蘋果系統腳本回复:腳本按順序運行您是否在 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) 通常就足夠了(如果您有很多公式<< 運行公式可能有幫助)。
回复:腳本按順序運行我想我理解你想要做什麼——實際上你想要輸入窗口生存()成為平台模態-- 你希望它阻止腳本的執行,直到窗口關閉。您可以通過顯式定義窗口而不是依賴默認行為來做到這一點。在這裡,我創建了一個包含輸入字段的模式窗口,然後我抓取每個輸入並創建生存()具有正確輸入的表達式。
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>