스크립트 순차 실행생존 플랫폼에서 Save Estimates를 만들고 새로 만든 테이블에서 추정치를 가져오려고 합니다. 문제는 Survival 테이블이 만들어질 때까지 기다리지 않고 Output 표현식을 실행한다는 것입니다. finish, wait, different orders 등을 시도했지만 작동하지 않습니다. 제안이 있나요? 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>Re: 스크립트를 순차적으로 실행그것은 내 부분의 오타였습니다. 전에도 맞았지만 두 가지가 일치하더라도 저에게는 작동하지 않았습니다. 나는 기다림을 시도했지만 작동하지 않았다. 나는 공식이 없으며 전체 스크립트가 복사되었습니다.
Re: 스크립트를 순차적으로 실행예, 이것은 완벽하게 작동합니다! 과거에 모달 창을 해본 적이 있지만 플랫폼에서 어떻게 하는지 몰랐습니다. 몇 가지 방법을 시도했지만 실패했습니다. 그냥 새창을 쓸 생각을 하지 않았나 싶습니다.
고맙습니다!
Re: 스크립트를 순차적으로 실행나는 훨씬 더 선호 @EraticAttack 의 솔루션이지만 이제 여기에 질문을 올바르게 이해했기 때문에 때때로 작동할 수 있는 또 다른 방법이 있습니다. On Close()를 플랫폼 창으로 설정하면 원하는 대로 실행할 수 있습니다. 이것은 창 이름에 따라 매우 오류가 발생하기 쉽지만 실행 전후에 존재하는 창을 비교하여 좀 더 강력하게 만들 수 있습니다.
Names Default To Here(0);
dt = Open("$SAMPLE_DATA/Rats.jmp");
Sur = Expr(
obj = dt << Survival();
Window("Survival / Reliability") << On Close(Output);
);
Eval(Sur);
Output = Expr(
dtname = Data Table(dt) << Get Name;
For Each({window_name}, Get Window List() << Get Window Title,
If(Contains(window_name, Eval Insert("^dtname^ - Survival of ")),
cur_w = Window(window_name);
break();
);
);
obj = cur_w[OutlineBox(1)] << Get Scriptable Object;
obj << Save Estimates;
dt2 = Data Table(dtname || " Survival");
columnnamegroup = Column(dt2, 1) << Get Name;
Groups = Column(dt2, columnnamegroup) << Get As Matrix;
Show(Groups);
);