안녕하세요 커뮤니티,
나는 어제 이것과 관련된 질문을했고 훌륭한 답변을 얻었습니다. 그러나 솔루션을 구현하려고 할 때 문제가 발생했습니다. 수많은 시간을 보낸 후 더 많은 도움을 요청합니다.
다음은 시나리오입니다.
다음 열과 행이 있는 데이터 테이블(첨부)이 있습니다.

1. "과일" 열에서 시작하여 한 번에 각 열을 반복하고 "위치"별로 로지스틱 플롯을 플롯하고 출력을 저널로 보내고 싶습니다.
2. JSL을 사용하여 플롯과 함께 제공되는 요약 통계를 완전히 제거하고 싶습니다.
문제없이 1 단계를 수행 할 수 있습니다. 아래는 내 코드입니다.
dt=open("$\fruit_drink.jmp");
colList = dt << Get Column Names();
For( i = 3, i <= Nitems( colList ), i++,
obj = Logistic(
Y( colList[i] ),
X( :Day ),
By( :location),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Min( 35.2151394422311 )} ),
Dispatch(
{},
"FitNom Plot",
FrameBox,
{Marker Size( 4 ), Row Legend(
colList[i],
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
obj << journal;
);이 출력을 얻습니다(요약 통계가 포함된 더 많은 그래프가 있지만 여기에 모두 맞출 수는 없습니다).

통계를 제거하기 위해 다음 솔루션을 구현하려고 했습니다(JMP 커뮤니티에서 받은 이전 도움말을 기반으로 함).
dt=open("$\fruit_drink.jmp");
colList = dt << Get Column Names();
For( i = 3, i <= Nitems( colList ), i++,
obj = Logistic(
Y( colList[i] ),
X( :Day ),
By( :location),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Min( 35.2151394422311 )} ),
Dispatch(
{},
"FitNom Plot",
FrameBox,
{Marker Size( 4 ), Row Legend(
colList[i],
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>이 스크립트를 실행하면 무한 루프가 발생하여 JMP를 종료해야 했습니다. 내부 for 루프를 외부에 배치하면 아무 일도 일어나지 않고 요약 통계가 제거되지 않습니다.
누군가 나를 도울 수 있습니까?
감사해요.
간단한 해결책.스크립트의 두 번째 For() 루프는 첫 번째 For() 루프 내에 있으며 둘 다 "i"를 인덱스 변수로 사용했습니다.따라서 두 번째 루프는 i의 값을 외부(첫 번째) 루프의 중지 값보다 작은 값으로 계속 설정했습니다.
다음은 간단한 수정입니다.
Names Default To Here( 1 );
dt = data table( "fruit_drink" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
안녕하십니까?
내 데이터 테이블이 첨부되어 있습니다. 그것은 당신을 위해 잘 실행되는 것이 이상합니다.
감사해요.
내가 제출한 코드를 테스트할 때는 그렇게 하지 않았습니다.데이터 테이블을 게시할 수 있습니다.문제가 데이터 문제라고 가정하고 데이터 테이블 사본이 있으면 더 자세히 살펴볼 수 있습니다.
안녕하십니까?
시간을 내어 도와주셔서 감사합니다. 귀하의 솔루션이 내가 원하는 것에 가까운 것 같습니다. 유일한 문제는 스크립트를 실행할 때 JMP가 무한 루프에 빠진다는 것입니다. 세션을 강제 종료하지 않고 저널에 차트를 계속 추가합니다.
감사해요.
코드에 몇 가지 문제가 있습니다.
- 코드의 첫 번째 줄에 추가해야 합니다.
Names Default To Here( 1 );
이 스크립트의 변수가 다른 스크립트의 동일한 명명된 변수를 방해하지 않도록 합니다.
- 개체 및 변수가 생성되기 전 또는 삭제된 후에 사용하려고 합니다.
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
위의 경우는 저널을 생성하기 전에 저널에 무언가를 전송하려고 시도하는 예시입니다.obj << close window;
For( i = 1, i <= N Items( obj ), i++,
jrn["Iterations"] << delete;
jrn["Whole Model Test"] << delete;
jrn["Parameter Estimates"] << delete;);
);
이 경우 방금 삭제한 개체를 참조하고 있습니다.
- 어떤 경우에는 Iterations 테이블이 없고 코드에서 오류가 발생한다는 것을 발견했습니다. 그래서 일부 명령문 주위에 Try() 함수를 추가했습니다.
For( i = 1, i <= N Items( obj ), i++,
Try( jrn["Iterations"] << delete );
Try( jrn["Whole Model Test"] << delete );
Try( jrn["Parameter Estimates"] << delete );
);
Try( obj << close window );
Try() 함수는 명령문을 수행하기 위해 "시도"하지만 수행할 수 없으면 계속 진행합니다.
- 또한 저널에 코드를 추가하는 두 번째 방법을 시도하는 것 같습니다.
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
나는 그것이 필요하지 않다고 가정하고 그것이 생성되기 전에 저널에 업로드를 시도하는 문제 때문에 거기에 있습니다.
그래서 여기에 코드 재 작업이 있습니다.
Names Default To Here( 1 );
dt = Open( "$\fruit_drink.jmp" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>