脚本按顺序运行我正在尝试从我的生存平台创建我的保存估计值,然后在新创建的表中获取估计值。 问题是它不会等到创建生存表后才执行输出表达式。 我试过完成、等待、不同的订单等......我无法让它工作,有什么建议吗? 我有 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>