Hola... Quiero crear varios gráficos de variabilidad en una ventana a partir de una lista que contiene nombres de columnas. Puedo ejecutarlo correctamente en tiempo real (gracias a la ayuda de otras publicaciones del foro de JMP). También quiero guardar el script en la tabla de datos para que la próxima vez que se abra, el usuario pueda hacer clic en el "triángulo verde" para generar la misma ventana de gráficos. Estoy a punto de lograrlo; guarda información en la tabla de datos, pero no genera la ventana con los gráficos al hacer clic en el triángulo verde. Si hago clic derecho y selecciono Editar en el triángulo verde, veo que la razón por la que no se genera la ventana con los gráficos es porque todo el script está entre comillas. No sé cómo quitar las comillas. ¿Alguna idea?
1º construyo una cadena (plotAllStandardExpr) para construir la nueva ventana a través de una serie de concatenaciones dentro de un bucle for.
En segundo lugar, la línea Eval(Parse(plotAllStandardExpr)) creará correctamente la ventana con todos los gráficos en ella.
Pero la línea Eval(Substitute(....) simplemente guarda la cadena entre comillas en la tabla de datos. Intenté Eval(Parse(plotAllStandardExpr)) dentro de la función Substitute, pero no funcionó.
Current Data Table(dtSplit_copy);
plotAllStandardExpr = "New Window(\!"Var Charts: All\!", V List Box(";
for(i = 1, i <= NItems(plotcols), i++,
plotAllStandardExpr = plotAllStandardExpr || "Variability Chart(
Y(" || plotcolsString[i] || "),
X( :Split, :Voltage, :tst_temp ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ));"
);
plotAllStandardExpr = plotAllStandardExpr ||"))";
Eval(Parse(plotAllStandardExpr));
Eval(Substitute(Expr(dtSplit_copy << New Script("All Var charts", xxxx)),
Expr(xxxx), Eval(plotAllStandardExpr)));
Debe usar Parse() para eliminar las comillas (no es necesario Eval() ya que desea la expresión). A continuación hay algunas opciones
Names Default To Here(1);
dt = New Table("");
plotcolsString = {"height", "weight"};
plotAllStandardExpr = "New Window(\!"Var Charts: All\!", V List Box(";
For(i = 1, i <= N Items(plotcolsString), i++,
plotAllStandardExpr = plotAllStandardExpr || "Variability Chart(
Y(" || plotcolsString[i]
||
"),
X( :Split, :Voltage, :tst_temp ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ))
,"
);
plotAllStandardExpr = plotAllStandardExpr || "))";
Parse(plotAllStandardExpr);
Eval(EvalExpr(dt << New Script("all var charts", Expr(Parse(plotAllStandardExpr)))));
Eval(Substitute(
Expr(dt << New Script("All Var charts2", _script_)),
Expr(_script_), Parse(plotAllStandardExpr))
);

Muchas gracias. ¡Ambas opciones funcionaron como se anuncia!