JMP Pro中如何使用循环批量设置公式
在JMP中,使用set formula或者在新建列的过程中使用formula参数时会出现这样的情况。公式设置中并非使用计算值而是采取原始值。
例如我们设置列2 = 列1的第1行,列3=列1的第2行,那么代码如下:
for ( i = 1, i<=2 , i++,
As Name("列"||char(i+1)) <<set formula(:列1[i] );
);
这里会直接将公式设置为列1[i],就会出现错误。此时我并未关闭脚本,因此i=3
这里我们需要用到Eval Expr(x)函数,返回表达式 x 的副本,对于 x 中的每个 Expr() 子句,均用其计算值替换。
因此代码可以写成如下形式:
for ( i = 1, i<=2 , i++,
fm = Eval Expr(Expr(As Name("列"||char(i+1)) <<set formula(Expr(:列1[i]) ))
fm;
);
注意这串代码转换中是不执行的,因此我们需要再补一下fm;
结果如下:
小tip:设置新列时的公式是会计算的,但是在已有的列中设置公式时是不计算的,会等JSL执行完后再计算