我有兩個變量用於定義總共 15 列。 它們是 a = {"1", "2", "3", "4", "5"} 和 b = {"1", "2", "3"}。 目前已經使用 Column("11")、Column("12")、Column("13")、Column("21") 的符號創建了 15 列,又名 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”數組創建 15 個以“D”為前綴的新列。 此外,為那些採用現有列的列設置公式 - 該列的平均 6 行。
例如,Column("D11") 的公式如下:
:Name("11") - 平均數[1]
Column("D12") 將如下所示:
:Name("12") - 平均數[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 個平均值遞增索引變量時,上面的代碼不起作用。 另一個問題是我需要遍歷 :Name("11")、:Name("12") 等,遍歷公式中 a 和 b 的所有組合。 我幾乎需要一種方法來按以下方式設置公式:
:姓名(b[i] || a[i])
但是, :Name 必須使用在它們之間帶有引號的字符串,並且不會讓您這樣做。
我嘗試了 parse、eval 等多種方法,但沒有成功。
任何幫助將不勝感激!
謝謝你!
這是一段可以工作的 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;
);
);