我有两个变量用于定义总共 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;
);
);