for 루프 내에서 변수 이름 설정안녕,
나는 다음 배열을 사용하여 for 루프에서 name1, name2,...와 같은 변수 이름을 설정하는 것을 좋아합니다.
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
등등.
아래 스크립트를 작성했는데 오류가 발생했습니다.
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
당신의 도움에 감사드립니다. 감사.
Re: for 루프 내에서 변수 이름 설정감사합니다 제프. 마지막 스크립트를 시도하고 파일과 listexcelsheet를 이름으로 변경하고 완벽하게 작동합니다. 모든 지원에 다시 한 번 감사드립니다.
Re: for 루프 내에서 변수 이름 설정정확히 무엇으로 어려움을 겪고 있습니까? 이해할 수 없는 오류가 발생했습니까? 위에서 작동하는 루프를 보여 드렸습니다.
앞에서 색인화된 JSL 변수 이름을 만드는 대신 목록을 사용하도록 제안했습니다. 여기에 게시한 코드에는 목록이 적합하지 않음을 시사하는 내용이 없습니다. 대신 목록을 사용하는 것이 좋습니다.
flow = {"one", "two", "three", "four", "five"};
names = {};
files = {};
For( i = 1, i <= N Items( flow ), i++,
names[i] = "A_" || flow( i );
files[i] = Open( "$Documents/JMP/A_" || Flow[i] || ".jmp" );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", files, listexcelsheet );
);Re: for 루프 내에서 변수 이름 설정대단히 감사합니다 제프. 첫 번째 부분을 얻은 후 조금 더 도움이 필요합니다. 다음은 잘 작동하는 스크립트입니다.
If( Nitems == 5,
name1 = ntable;
name2 = "A" || "_" || Flow[1];
name3 = "A" || "_" || Flow[2];
name4 = "A" || "_" || Flow[3];
name5 = "A" || "_" || Flow[4];
name6 = "A" || "_" || Flow[5];
name1jmp = "$Documents/JMP/" || "A" || "_" || Flow[1] || ".jmp";
name2jmp = "$Documents/JMP/" || "A" || "_" || Flow[2] || ".jmp";
name3jmp = "$Documents/JMP/" || "A" || "_" || Flow[3] || ".jmp";
name4jmp = "$Documents/JMP/" || "A" || "_" || Flow[4] || ".jmp";
name5jmp = "$Documents/JMP/" || "A" || "_" || Flow[5] || ".jmp";
file1 = Open( ntablejmp );
file2 = Open( name1jmp );
file3 = Open( name2jmp );
file4 = Open( name3jmp );
file5 = Open( name4jmp );
file6 = Open( name5jmp );
listx = Eval List( {name1, name2, name3, name4, name5, name6} );
listexcelsheet = Eval List( {name1, name2, name3, name4, name5, name6} );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", listx, listexcelsheet );
);
모든 Nitems에서 작동하도록 for 루프를 만들려고 합니다. 저는 MAC 머신을 사용하고 있기 때문에 이렇게 했습니다. 모든 지속적인 지원에 감사드립니다.
Re: for 루프 내에서 변수 이름 설정기술은 완전히 동일합니다. 식으로 구문 분석하고 평가할 문자열을 작성하고 있습니다.
혼란스러울 수 있는 한 가지는 아래의 \!"입니다. "를 포함하는 문자열이 필요하기 때문에 \!를 사용하여 문자열을 이스케이프 처리해야 합니다.
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
expr_string = "name" || Char( i + 1 ) || "jmp = \!"$Documents/JMP/" || "A_" || Flow[i] || ".jmp\!"";
Show( expr_string );
Eval( Parse( expr_string ) );
);Re: for 루프 내에서 변수 이름 설정감사합니다 제프. 둘 다 잘 작동하지만 내 코드가 해당 정의를 기반으로 하기 때문에 첫 번째 것을 좋아합니다. name1 대신 정의하는 것도 좋아합니다.
name1jmp = "$문서/JMP/" || "ㅏ" || "_" || 흐름[i] || ".jmp" ;
이전 스크립트에 추가하는 방법을 알려 주시겠습니까? 감사
Re: for 루프 내에서 변수 이름 설정@txnelson 당신의 질문을 나와 다르게 해석합니다.
변수 이름의 일부로 색인 번호가 포함된 일련의 JSL 변수를 만들고 싶다고 생각합니다.
그렇게 할 수 있지만 Parse()를 시도하기 전에 전체 표현식을 문자열로 빌드해야 합니다.
이와 같이:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
그러나 인덱싱이 내장된 목록 또는 연관 배열을 사용하는 대신 왜 이렇게 하려는지 잘 모르겠습니다.
names = {};
names[1] = "A_one";
For( i = 1, i <= N Items( flow ), i++,
names[i + 1] = "A_" || flow[i]
);
Show( names[1], names[2], names[3], names[4] );
Re: for 루프 내에서 변수 이름 설정열 이름 바꾸기에 올바른 구문을 사용하고 있지 않습니다.다음은 에서 직접 가져온 예입니다.
도움말==>스크립팅 인덱스==>컬럼 스크립팅
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );