Permitir que funciones como Dispatch acepten cadenas o expresionesAlgunas funciones solo aceptan argumentos de texto entre comillas, lo que resulta molesto cuando se generan grandes cantidades de gráficos o tablas mediante un script.
Sería bueno si algo como lo siguiente funcionara:
// 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 )}
))));
En cambio, tengo que usar un código complicado como este:
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 )}
))))));
Funciones con este problema que conozco: envío, como columna,: nombre
ScriptingRe: Permitir que funciones como Dispatch acepten cadenas de variables o expresionesGracias por la entrada, y sí, tiene razón sobre New Column. Edité mi publicación original para mayor claridad.
Re: Permitir funciones como Despacho, Fórmula, Como columna, etc. aceptar variables de cadena o expresarDaré mi voto con usted con respecto a Dispatch. Sin embargo, algunas de sus afirmaciones no son ciertas. La nueva columna no requiere un Expr.
Actualmente, la función As Column () solo toma un nombre de columna como argumento. Aunque Col << get name devuelve una cadena, tengo entendido que no es un nombre de objeto.
Las versiones anteriores de JMP no tenían As Column (). Column (txt) podría, y puede, usarse en una fórmula si es una fórmula de columna como Col Mean (). Sin embargo, dado que la mayoría de las fórmulas de columna se ejecutan por fila para referirse a los valores de fila, la fórmula requería la sintaxis Column (txt) [] o Column (#) []. Creo que AsColumn () se creó para hacer referencia a los valores vectoriales.
Ya que soy un mecanógrafo horrible, todavía me gusta usar la sintaxis del corchete izquierdo, derecho a la derecha de Columna (txt) []. ¡Son solo 2 caracteres iguales a "Como"! Estoy publicando esto no para cancelar o discutir su elemento de la lista de deseos, sino para proporcionar una alternativa simple ahora.
Tenga en cuenta la sintaxis de la fórmula, Col Mean () y Col Std Dev () solo necesitan una referencia de columna.
Mi regla general, si estoy usando una variable en una fórmula, use Column () [] o ref [] o alternativamente 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)) ) );