允许Dispatch之类的函数接受字符串变量或表达式某些函数仅接受带引号的文本参数,这在使用脚本生成大量图表或表格时很烦人。
如果执行以下类似操作会很好-
// k is some procedurally generated string variable
dt << Variability Chart(
Y( :ycolumn),
X( :xcolumn),
SendToReport(
Dispatch({k}, "2", ScaleBox,
{Min( 300 ), Max( 470 ), Inc( 10 ), Minor Ticks( 1 )}
))));
相反,我必须使用这种复杂的代码-
Eval(Eval Expr(dt << Variability Chart(
Y( :ycolumn),
X( :xcolumn),
SendToReport(
Dispatch({Expr(k)}, "2", ScaleBox,
{Min( 300 ), Max( 470 ), Inc( 10 ), Minor Ticks( 1 )}
))))));
我知道的与这个问题有关的功能-调度,列,名称
脚本编写回复:允许诸如Dispatch之类的函数接受字符串变量或表达式谢谢您的输入,是的,您对New Column的看法是正确的。 为了清楚起见,我已经编辑了原始帖子。
回复:允许使用诸如分派,公式,按列等功能。接受字符串变量或表达关于派遣,我将与您投赞成票。但是,您的某些说法不正确。New Column不需要Expr。
当前,函数As Column()仅将列Name作为其参数。即使Col << get name返回一个字符串,但据我了解,它不是对象名。
JMP的早期版本没有As Column()。 如果Column(txt)是像Col Mean()这样的Column公式,则可以并且可以在公式中使用。但是,由于大多数列公式都是按行执行的,以引用行值,因此该公式需要语法Column(txt)[]或Column(#)[]。 我相信AsColumn()的创建是为了引用向量值。
由于我是一个糟糕的打字员,所以我仍然喜欢在Column(txt)[]的右侧使用左,右括号语法。只有两个字符与“ As”相同!我发布此消息不是为了取消或争论您的愿望清单项目,而是现在提供一个简单的替代方法。
注意公式语法,Col Mean()和Col Std Dev()仅需要列引用。
我的经验法则是,如果我在公式中使用变量,请使用Column()[]或ref []或交替使用As Column(Column(txt)),AsColumn(ref)。
Names Default To Here( 1 );
exdt = Open( "$SAMPLE_DATA/Big Class.jmp" );
show( exdt:height[1] + :height[2] + Column( "height" )[3] ); //
txt = "weight";
cnme = column(txt); //column ref
exdt[[7,13, 15],txt] = empty();
exdt << get rows where(IsMissing(Column(txt)[]));
exdt << get rows where(IsMissing(As Column(Column(txt))));
exdt << get rows where(IsMissing(cnme)); // will throw an error
exdt << get rows where(IsMissing(cnme[])); //refers to the column values
exdt << get rows where(IsMissing(As Column(cnme))); // will throw an error
show(Col Mean(Column(txt)));
exdt << New Column("MyNewCol "||txt, Formula( ( Column(txt)[] - Col Mean(Column(txt)) )/ Col Std Dev(Column(txt)) ) );