允許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)) ) );