你好,
我用下面的脚本创建了一组带有 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])
)
)
);