아주 간단하게, 일부 가변성 차트를 모듈화하려고 합니다. 이 차트를 구성하려는 총 3-4개의 매개변수가 있으므로 함수에 키를 전달하여 구성할 열을 알려주고 해당 열에 대한 특정 처리를 설정하도록 해야 합니다. 즉, 플롯 작업의 일부로 해당 열이 어떤 종류의 변환을 거쳐야 하는지입니다.
내가 시작한 방법은 문자열을 전달한 다음 조건 집합을 사용하여 변환할 열의 이름(colname)을 지정한 다음 변환에 적용할 문자열(yname)을 지정하는 것입니다.
이 작업을 수행하기 위해 여러 가지 방법을 시도했지만 어떤 솔루션을 사용하든 플롯이 올바르게 작동하지 않습니다. 가변성 차트의 Y를 하드 코딩하는 것은 주어진 필터에 대해 항상 올바르게 작동하므로 데이터가 있다는 것을 알고 있지만 내 변수 접근 방식을 사용하여 선택할 수 없는 것 같습니다. 이것은 지금까지 var 차트 Y 라인에 대해 시도한 것입니다.
- Y( 변환 열( yname, Formula( 열(colname) ) ) ),
- JMP 경고: 잘못된 인수(대화 상자)
- 모든 행에 누락된 값이 있거나 제외되어 그룹에 데이터가 없습니다(로그 창).
- Y( 변환 열( yname, 수식( 열(dt,colname) ) ) ),
- JMP 경고: 잘못된 인수(대화 상자)
- 모든 행에 누락된 값이 있거나 제외되어 그룹에 데이터가 없습니다(로그 창).
- Y( 변환 열( yname, Formula( 열( 열로(colname)) ) ) ),
- JMP 경고: 미해결 열 256회(대화 상자)
- "잘못된 인수 256회, 모든 행에 누락된 값이 있거나 제외되었기 때문에 하나의 열 또는 그룹에 데이터가 없습니다(로그).
- Y( 열 변환( yname, Formula( 열( 열(dt,colname)) ) ) ),
- JMP 알림: 범위가 지정된 데이터 테이블 액세스에는 데이터 테이블 열 또는 변수가 256번 필요합니다(대화 상자).
- 잘못된 인수 256회, 모든 행에 누락된 값이 있거나 제외(로그)되어 하나의 열 또는 그룹에 데이터가 없습니다.
- Y( 열 변환( yname, 수식( 열로(colname) ) ) ),
- JMP 경고: 미해결 열 267회(대화 상자)
- (로그 오류 없음)
- Y( 열 변환( yname, 수식( As 열(dt,colname) ) ) ),
- JMP 알림: 범위가 지정된 데이터 테이블 액세스에는 데이터 테이블 열 또는 변수가 267번 필요합니다(대화 상자).
- (로그 오류 없음)
내 시도로 명확하지 않은 경우 As Column()과 Column()의 차이점이 무엇인지 여전히 명확하지 않습니다. 둘 중 하나와 둘 다 있는 포럼에서 솔루션을 보았기 때문에 모두 시도했지만 아무데도 가지 못했습니다. 내가 볼 수 있는 유일한 단서는 As Column()이 독립적으로 사용될 때 Column()에 의해 래핑된 경우(256)와 비교하여 다른 수의 액세스 위반(267)이 발생한다는 것입니다. 변환 수식의 열 이름을 하드 코딩하면 267개의 행이 올바르게 표시되기 때문에 267이 해당 필터에서 반환되는 "정확한" 행 수라는 것을 알고 있습니다.
또한 colname 변수를 열(colname = :R 및 colname = ":R")에 직접 설정하고 이를 직접 사용하거나 Column() 및 As Column()의 조합으로 래핑하는 다양한 조합을 시도했습니다. 성공하지 못한 채 작동합니다.
아무도 내가 여기서 뭘 잘못하고 있는지 볼 수 있습니까?
참고: 이 정확한 코드는 테스트되지 않았으며 변수 이름은 일반화되었습니다.
//
// Build plot functions
//
var_chart = Function( {dutname, ytype, stressname, bias, ver},
{chart, ax_min, ax_max, ax_step, len, colname, yname},
<BR /> ax_min = 0;<BR /> ax_max = 1;<BR /> ax_step = 0.1;<BR />
If(ytype == "r", (colname = "R"; yname = "R [Ω]"));<BR /> If(ytype == "l", (colname = "L"; yname = "L [H]"));<BR /> If(ytype == "c", (colname = "C"; yname = "C [F]"));
If(stressname == "s1", len = 1.1);
If(stressname == "s2", len = 2.2);
If(stressname == "s3", len = 3.3);
chart = Variability(
Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
X( :X1, :X2, :X3, :X4 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
<<SET scale=""></SET>