목록에서 For 루프의 데이터 테이블 평가For 루프를 사용하여 데이터 테이블의 이름을 바꾸는 스크립트에서 계속 오류가 발생합니다.
내 스크립트의 단순화된 버전은 다음과 같습니다.
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For( i, i <= NNames, i++,
dt = Data Table( OldNames[i] );
dt << Set Name( NewNames[i] );
);
다음과 같은 오류가 계속 발생합니다.
'Data Table' , Data Table/*###*/( OldNames[i] )의 액세스 또는 평가에서 데이터 테이블을 찾을 수 없습니다.
그러나 Data Table(OldNames[1])을 평가할 때 오류가 없습니다!
자동화 및 스크립팅데이터 접근대량 맞춤화Re: 목록에서 For 루프의 데이터 테이블 평가무리 감사.테이블 이름 중 하나와 하나의 테이블이 개인 테이블인 문제였습니다.
Re: 목록에서 For 루프의 데이터 테이블 평가@user8421 ,
성공적으로 실행하셨나요? @jthi 의 대본?그렇다면 다음과 같이 의심됩니다.
- 하나 이상의 테이블이 닫혀 있습니다.
- 하나 이상의 테이블이 비공개입니다.
- 잘못된 옛 이름.
아래는 약간 수정한 내용입니다 @jthi 의 스크립트입니다. 세 번째 테이블을 비공개로 만들고 For 루프에 show 문을 추가합니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp", "Private");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
show(i, OldNames[i], NewNames[i]);
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i]);
);
다음은 로그 출력입니다.
/*:
i = 1;
OldNames[i] = "Big Class";
NewNames[i] = "New Name 1";
i = 2;
OldNames[i] = "Failures3Delimited";
NewNames[i] = "New Name 2";
i = 3;
OldNames[i] = "Semiconductor Capability";
NewNames[i] = "New Name 3";
Cannot locate data table in access or evaluation of 'Data Table' , Data Table/*###*/(OldNames[i])
at line 11 in Script.jsl
JMP 스크립팅 가이드에서는 개인 테이블에 대해 다음과 같이 설명합니다.
- N Table()이 열린 데이터 테이블 수를 반환할 때 개인 테이블은 계산되지 않습니다.
- 개인 테이블은 현재 데이터 테이블()을 사용하여 최신 상태로 만들 수 없습니다.
이로 인해 개인 테이블에는 동일한 기능이 없을 수도 있고, 계산되지 않기 때문에 이름이 메모리에 저장되지 않을 수도 있다는 생각이 들었습니다.
행운을 빌어요!
Re: 목록에서 For 루프의 데이터 테이블 평가죄송합니다. 단순화하는 동안 스크립트의 일부를 놓쳤다는 것을 깨달았습니다.
NNames = NItems(새 이름);
For 루프의 첫 번째 인수는 i=1입니다.
내 스크립트에 두 가지 모두 올바르게 정의되어 있어도 여전히 동일한 오류 메시지가 나타납니다.
Re: 목록에서 For 루프의 데이터 테이블 평가최소한 i(i = 1)에 대한 정의가 누락된 것 같습니다. 또한 NNames가 무엇인지 잘 모르겠습니다.
다음은 작동하는 예입니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);Re: 목록에서 For 루프의 데이터 테이블 평가안녕,
이에 따라 For 루프의 처음 두 인수를 변경했습니다.이제 작동할 것입니다:
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(
i=1,
i <= NItems(NewNames),
i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);