안녕하세요,
데이터 분석을 수행하지만 구성하려면 다양한 사용자 입력이 필요한 스크립트를 작성했습니다. 나중에 유사한 분석을 수행하고 싶지만 모든 설정을 다시 입력할 필요는 없는 경우가 있습니다. 기본 스크립트는 이미 기존 변수를 읽고 해당 필드를 자동으로 채울 수 있으므로 해당 기본값을 저장하고 가져올 수 있는 방법이 있으면 설정하겠습니다. 여러 가지 다른 구성을 가질 수 있고 새 구성을 만들기 위해 스크립트 자체를 편집할 필요가 없기를 원합니다.
한 가지 아이디어는 변수 이름 열과 해당 값 열이 포함된 테이블을 저장하는 것이었지만, 이는 다양한 변수 유형(숫자, 문자열, 목록)에서는 잘 작동하지 않았습니다.
더 좋아 보이는 아이디어는 다양한 사용 사례에 대한 기본 설정이 포함된 다른 .jsl 파일을 공유 네임스페이스에 저장한 다음 기본 스크립트를 실행하기 전에 관련 파일을 실행하는 것입니다. 수동으로 구성 파일을 만드는 대신 스크립트 내에서 구성 파일을 만들 수 있기를 원합니다.
새 jsl 파일 저장에 관한 다른 게시물을 찾았습니다. https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
JSL 견적을 설정한 다음 변수의 현재 값을 해당 견적으로 대체할 수 있어야 하지만 NameExpr이 작동하지 않는 것 같습니다. 문자열은 따옴표 없이 대체되며 목록은 목록으로 표시되고 숫자는 무시됩니다. 이 작업을 수행할 수 있는 약간의 변화가 있습니까, 아니면 동일한 목표를 달성하는 더 나은 방법이 있습니까?
감사해요!
names default to here (1);
//namespace for the shared variables
If( !Namespace Exists( "TestNS" ), New Namespace( "TestNS" ) );
//the variables I want to save for later
TestNS:a = 5;
TestNS:b = "text";
TestNS:c = {1,2,3,4};
TestNS:d = {"a","b","c","d"};
//set up script to save as JSL
script = JSL Quote(
TestNS:a = a_dv;
TestNS:b = b_dv;
TestNS:c = c_dv;
TestNS:d = d_dv;
);
//substitute the dummy values for the current values... this isn't working
substitute Into (script, expr(a_dv), nameexpr (TestNS:a));
substitute Into (script, expr(b_dv), nameexpr (TestNS:b));
substitute Into (script, expr(c_dv), nameexpr (TestNS:c));
substitute Into (script, expr(d_dv), nameexpr (TestNS:d));
show(script);
//save script for later use
Save Text File( "$downloads\MyScript.jsl", script );