你好,
我使用以下脚本创建了一组带有 for 循环的列
For(i=1, i<= N Items(abs_cols), i++,
Eval(
Substitute(
Expr(
New Column(__name2__,
Formula(
If(__zscore__ < 2, __abs__)
)
)
),
Expr(__name2__), "Outliers Removed " || char(abs_cols[i]),
Expr(__zscore__), Column("Z-score " || char(abs_cols[i])),
Expr(__abs__), Column(char(abs_cols[i]))
)
)
);当我运行这个脚本时,列是用正确的公式创建的,但任何新列中都没有填充任何值。 更令人费解的是,数据预览显示的值与我希望填充的值完全一样。

我不确定发生了什么,请帮忙?
最后,根据我的经验,它必须执行函数 Column() 不能很好地处理列公式。相反,您可以像这样尝试“As Column”:
Names default to here(1);
dt = Open("$Sample_data/iris.jmp");
New Column("Z-scoreSepal length", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal()));
New Column("Z-scoreSepal width", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal()));
abs_cols = {:Sepal length, :Sepal width};
For(i=1, i<= N Items(abs_cols), i++,
Eval(
Substitute(
Expr(
New Column(__name2__,
Formula(
If(As Column(__zscore__) < 2, As Column(__abs__))
)
)
),
Expr(__name2__), char(abs_cols[i]),
Expr(__zscore__), "Z-score " || char(abs_cols[i]),
Expr(__abs__), char(abs_cols[i])
)
)
);