다른 입력으로 스크립트를 여러 번 실행합니다.안녕
일부 데이터를 가져오고 일부 조작(예: 정렬, 정렬, 하위 집합 등)을 수행하고 마지막으로 데이터를 플롯하는 스크립트를 작성했습니다.
다른 입력으로 이 스크립트를 여러 번 실행해야 합니다. 어떻게 해야 합니까?
이것은 내가 시도한 것입니다 -
in_list = {};
in_list = Associative array(dtin:input) << get keys //this is to get all inputs into a list
for(i=1,i<NITEMS></NITEMS>
그러나 스크립트는 첫 번째 입력에 대해서만 실행됩니다.
또한 각 출력을 다른 파일 이름으로 저장합니다.
Re: 다른 입력으로 스크립트를 여러 번 실행합니다.테이블 이름을 조인에 하드코딩하지 마십시오.대신 변수 이름을 사용하십시오.예를 들어 Data Table("Table Namen1") << Join("Table Name2",...)을 사용하지 않고 대신 dt << Join(dt2,...)를 사용합니다.그렇게 하면 데이터 테이블 변수가 항상 현재 루프 반복에 대한 올바른 데이터 테이블을 가리키도록 할 수 있습니다.
또한 문제를 해결하기 위해 설명한 것처럼 더 이상 필요하지 않은 중간 데이터 테이블을 닫아야 합니다.JMP를 최대한 깔끔하게 유지하십시오.
Re: 다른 입력으로 스크립트를 여러 번 실행합니다.답장을 보내 주셔서 감사합니다. 추가 디버그 후 문제의 근본 원인을 파악했습니다.
문제 설명: 루프에서 실행되는 동안 입력 선택 항목이 업데이트되지만 그래프는 모든 입력 선택 항목에 대해 동일합니다.
근본 원인: 스크립트에 조인이 있습니다. 따라서 스크립트가 실행될 때마다 테이블은 접미사 1,2 등으로 저장됩니다.
그러나 조인 논리에는 원래 테이블 이름이 있으므로 테이블이 업데이트되지 않습니다. 테이블이 원래 테이블(처음 실행할 때 생성된 테이블)과 조인될 때마다 출력 그래프는 동일합니다.
해결책: Try(close(out_table,no save)) 시도했지만 운이 없었습니다.
이와 관련하여 도움을 주시면 감사하겠습니다.
Re: 다른 입력으로 스크립트를 여러 번 실행합니다.당신은 정말로 그런 것이 필요하지 않아야합니다.더 완전한 스크립트를 게시할 의향이 있다면 문제가 어디에 있는지 파악하는 데 도움을 드릴 수 있습니다.Stop()은 전체 스크립트의 실행을 완전히 종료합니다.Break()는 루프 실행을 종료합니다. Continue()는 귀하가 설명한 것과 거의 동일합니다. 현재 반복을 중단하고 루프의 맨 위로 돌아갑니다.
Re: 다른 입력으로 스크립트를 여러 번 실행합니다.응답해 주셔서 감사합니다.
문제를 일으키는 for 루프 내부의 if 문에 stop()이 있다고 생각했습니다.
이를 continue()로 대체했지만 문제가 해결되지 않았습니다.
현재 반복만 중지하고 다음 반복을 계속할 수 있는 기능이 있습니까?
감사
Re: 다른 입력으로 스크립트를 여러 번 실행합니다.두 번째 줄에 세미콜론이 누락되었지만 실제 스크립트에 세미콜론이 있다고 가정합니다.문제는 루프 측면에 있을 수 있습니다(btw, for 루프의 두 번째 인수는 "<"가 아닌 "<="여야 합니다. 그렇지 않으면 목록의 마지막 항목을 놓칠 수 있습니다).다음은 귀하의 접근 방식을 사용하는 작업 스크립트의 아주 간단한 예입니다.
먼저 몇 가지 입력을 얻기 위해 테이블을 만들었습니다.
그런 다음이 스크립트를 실행합니다.
dt = Current Data Table();
in_list = Associative Array(dt:input) << get keys;
for(i=1, i<=N Items(in_list), i++,
Print(in_list[i]);
);
다음은 로그 출력입니다.
매번 인수에 대해 다른 값을 사용하여 루프 내에서 평가할 수 있는 함수를 작성하는 데 도움이 될 수 있습니다.이렇게 하면 루프 외부에서 기능을 개발하고 테스트할 수 있으므로 문제를 더 쉽게 해결할 수 있습니다.