스크립트를 순차적으로 실행생존 플랫폼에서 추정 저장을 생성한 다음 새로 생성된 테이블에서 추정을 가져오려고 합니다. 문제는 Output 표현식을 실행하기 전에 Survival 테이블이 생성될 때까지 기다리지 않는다는 것입니다. 완료, 대기, 다른 주문 등을 시도했지만 이 작업을 수행할 수 없습니다. 제안 사항이 있습니까? 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);해석학맥 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: 스크립트를 순차적으로 실행나는 당신이하려는 일을 이해한다고 생각합니다. 효과적으로 입력 창을 원합니다. 활착() 될 플랫폼 모달 -- 창이 닫힐 때까지 스크립트 실행을 차단하기를 원합니다.기본 동작에 의존하는 대신 창을 명시적으로 정의하여 이를 수행할 수 있습니다.여기에서 입력 필드가 포함된 모달 창을 만든 다음 각 입력을 잡고 활착() 올바른 입력으로 표현하십시오.
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>