데이터 테이블 스크립트는 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.안녕하세요 여러분,
테이블 스크립트가 메인 스크립트에 설정된 변수를 동적으로 고려하지 않는 이유가 약간 헷갈립니다. 따라서 수치는 for 루프의 실행에 따른 동적 선택이 아닌 표준 값을 얻습니다. 도움을 주시면 감사하겠습니다. 아래는 일반적으로 테이블 스크립트라고 불리지 않는 경우를 대비해 제가 참조하는 테이블 스크립트입니다.

강조된 코드가 동적으로 작동하는 왼쪽의 주요 JSL 스크립트를 살펴보세요. "vc 스크립트"가 데이터 테이블에 저장되면 스크립트가 스크린샷의 오른쪽에 열립니다. "weights"와 "counts"가 만나는 첫 번째 값은 포함된 for 루프의 모든 루프에 대해 설정된 것 같습니다. 이것을 동적으로 만들 수 있는 방법이 있습니까? 열 문자열이나 수식을 만드는 것에 대한 게시물만 읽었지만 이 경우에는 맞지 않는 것 같습니다.

저장된 스크립트가 이 값을 하드 코딩하지 않도록 주요 jsl 코드를 변경하는 데 도움을 주시면 감사하겠습니다. 미리 감사드립니다!
자동화 및 스크립팅기본 데이터 분석 및 모델링데이터 탐색 및 시각화품질 및 공정 엔지니어링결과 공유 및 전달윈도우Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.VC 스크립트에 모두 있는 것은 아니지만 평가하고 싶은 특정 값이 있습니까?
Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.왼쪽 위에서 "vc depo summary subset"이라는 부분 집합 데이터 테이블을 만듭니다. 이 경우 변수 depo에 의해 for 루프 부분 집합을 만듭니다. 하지만 예를 들어 depo = {"A", "B", "C"}입니다. 왼쪽의 jsl 스크립트에서 A로 부분 집합을 만들면 가중치 = [50, 50, 50, 50, 50], 개수 = [16, 20, 19, 20, 20]이 되고 B 또는 C로 부분 집합을 만들면 다른 가중치와 개수가 됩니다. 왼쪽의 스크립트는 제대로 작동합니다. 하지만 데이터 테이블에 저장된 동일한 스크립트를 열면 변수(왼쪽에 있는 그대로)를 그대로 두지 않고 A의 값으로 가중치/개수를 기본값으로 지정합니다. 변수는 각각 B와 C에 대한 올바른 가중치/개수를 나타냅니다. 오른쪽에 하드 코딩된 값을 보는 대신 변수로 유지하는 방법을 잘 모르겠습니다.
Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.제가 올바르게 이해했다면, 당신은 일부 변수의 평가를 막고 싶어합니다. 이를 위한 한 가지 옵션은 여러 Expr()을 사용하는 것입니다.
As you didn't share the script, I will try to use very simple example which hopefully demonstrates what you can do. Compare the script, table script and script which is inside frame box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
script = EvalExpr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(Expr(Expr(vals)))},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(Expr(Expr(vals)))), i++,
H Line(Expr(Expr(Expr(vals))));
);
);
);
))
);
Eval(EvalExpr(
dt << New Script("Test", Expr(Name Expr(script)));
));


Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.고맙습니다, Jarmo! 효과가 있었어요!
변수를 1개 대신 Expr() 함수 3개로 세 번 묶어야 하는 이유가 있나요?
Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.네, 이는 JMP에서 표현식 평가가 작동하는 방식입니다( 스크립팅 가이드 > 프로그래밍 방법 > 고급 표현식, 매크로 및 목록 "표현식 인용 및 인용 취소").
이 경우 표현식을 빌드할 때 두 가지를 평가할 EvalExpr이 있고 테이블 스크립트에 하나를 더 남겨서 평가되는 대신 Expr로 유지하려고 합니다(따라서 총 3개가 필요합니다). 이와 같은 것을 빌드하는 다른 방법도 있지만, Expr()을 더 추가하는 것이 때때로 도움이 될 수 있다는 것을 아는 것이 좋습니다.
예를 들어, 이것은 트리플 Expr()이 필요 없이 유사한 스크립트를 생성해야 한다고 생각합니다.
script = Substitute(
Expr(
vals = [55, 60, 70];
Eval(
Eval Expr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = _valsexpr_},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(_valsexpr_), i++,
H Line(_valsexpr_)
);
)
)
)
);
),
Expr(_valsexpr_), Name Expr(Expr(vals))
);
Re: 데이터 테이블 스크립트가 저장된 스크립트에서 새 값을 사용하도록 동적으로 업데이트되지 않지만 기본 jsl 스크립트에서 작동합니다.왜 그냥 안되나요?
script = Expr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(vals)},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(vals)), i++,
H Line(Expr(vals));
);
);
);
))
);?