총 15개의 열을 정의하는 데 사용되는 두 개의 변수가 있습니다. 그들은 a = {"1", "2", "3", "4", "5"}이고 b = {"1", "2", "3"}입니다. 현재 Column("11"), Column("12"), Column("13"), Column("21"), 일명 Column(b[1] || a[1]), 열(b[1] || a[2]) 등...
기존 열 15개 중 처음 6개 행의 평균을 구하여 크기가 15인 배열에 배치했습니다. 나는 이 배열을 "ave"라고 불렀다.
따라서 ave[1]은 Column("11")의 처음 6개 행의 평균이고, ave[2]는 Column("12")의 처음 6개 행의 평균입니다.
이제 내가 하고 싶은 것은 'a' 및 'b' 배열을 모두 사용하여 "D" 접두사가 붙은 15개의 새 열을 만드는 것입니다. 또한 기존 열(해당 열의 평균 6개 행)을 사용하는 열에 대해 수식을 설정합니다.
예를 들어 Column("D11")의 수식은 다음과 같습니다.
:이름("11") - ave[1]
Column("D12")은 다음과 같습니다.
:이름("12") - ave[2]
내 코드:
index = 1;
For( i = 3, i > 0, i--,
For( j = 5, j > 0, j--,
at << Add Multiple Columns( "D" || b[i] || a[j], 1, numeric, continuous, );
F = Eval Expr(expr(ave[index]));
Column( "D" || b[i] || a[j] ) << Set Formula( :Name("11")-Name Expr(F) );
index = index + 1;
);
);
"ave"에 저장된 15개의 평균 값을 통해 인덱스 변수를 증가시키려고 하면 위의 코드가 작동하지 않습니다. 다른 문제는 수식에서 a & b의 모든 조합을 통해 :Name("11"), :Name("12") 등을 반복해야 한다는 것입니다. 다음과 같은 방식으로 수식을 설정하는 방법이 거의 필요합니다.
:이름(b[i] || a[i])
그러나 :Name은 사이에 따옴표가 있는 문자열을 사용해야 하며 그렇게 할 수 없습니다.
구문 분석, 평가 등 여러 방법을 시도했지만 운이 없었습니다.
어떤 도움이라도 대단히 감사하겠습니다!
감사합니다!
다음은 작동하는 JSL입니다.필요한 명령어의 정확한 문자열을 생성한 후 Eval(Parse())로 코드를 실행하는 방식을 사용합니다.
index = 1;
;
For( i = 3, i > 0, i--,
For( j = 5, j > 0, j--,
Eval(
Parse(
"at << New Column(\!"D" || b[i] || a[j] ||
"\!",1,numeric,continuous,Formula( :Name( \!""
|| Char( index + 10 ) || "\!" ) - " || Char( ave[index] ) || "));"
)
);
index = index + 1;
);
);