Cómo almacenar la lista evaluada en el script de tabla de datosHola,
Me gustaría almacenar un script en una tabla de datos para que luego los usuarios puedan abrir las tablas y ejecutar los scripts.
Mi problema es que no sé cómo imprimir en el script de la tabla de datos los valores de las variables que uso en mi script original. Lo intenté con expr, eval, ...
El siguiente ejemplo lo muestra claramente: Intento guardar un DataTableScript que genera un gráfico simple basado en "mylist". ¿Pero cómo guardar la cadena real contenida en "mylist"?
Gracias por tu ayuda.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mylist = {"sex" , "age"};
Graph = Variability Chart(
Y( :weight ),
X( eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
dt << New Script(
"Test",
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Re: Cómo almacenar la lista evaluada en el script de tabla de datosAquí hay una forma en que puedes juntar tus expresiones.
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
makeBiv = Expr(Bivariate( Y( :height ), X( :weight ) ));
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
newexpr = expr(tbd; tbd2);
substituteinto(newexpr, expr(tbd), nameexpr(makevc),
expr(tbd2), nameexpr(makeBiv)
);Re: Cómo almacenar la lista evaluada en el script de tabla de datosHola,
Tengo una pregunta extra sobre este asunto:
por varias razones, necesito modificar un poco la expresión saveScript:
Quiero agregarle algunas líneas de código como:
dt << Clear Select;
dt << Clear Row States;
dt << Select Where( ...);
dt2 = dt << subset ....;
Luego guardo el nuevo script en dt2.
Intenté agregar o concatenar las 2 expresiones, pero no funcionó 
Alguna ayuda ?
Re: Cómo almacenar la lista evaluada en el script de tabla de datosEl SubstitueInto hace el trabajo !!!
Muchas gracias
Re: Cómo almacenar la lista evaluada en el script de tabla de datosNo puedo: la lista es el resultado de un script
Re: Cómo almacenar la lista evaluada en el script de tabla de datosSolo incluye la definición de la lista como parte de la secuencia de comandos de la tabla:
dt << New Script(
"Test",
mylist = {"sex" , "age"};
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Re: Cómo almacenar la lista evaluada en el script de tabla de datosTiendo a (tratar de) evitar la duplicación de código (visto como algo malo para la capacidad de mantenimiento del código en cualquier lenguaje de programación) y a seguir algunos patrones de diseño con los que estoy familiarizado. Entonces, con este espíritu, lo haría como se muestra a continuación. Pero estoy seguro que hay muchas otras formas.
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
// Make the chart
makeVC;
// Now save the script that makes the chart using a similar method to the above
saveScript = Expr(CurrentDataTable() << New Script("My Variability Chart", TBD));
SubstituteInto(saveScript, Expr(TBD), NameExpr(makeVC));
saveScript;