Hola,
He estado creando una aplicación que involucra al usuario para seleccionar columnas para usar en la construcción de un modelo, para PQA seleccionados, mediante el uso de ventanas modales, como en el archivo JMP adjunto con los datos del juguete y el script titulado "Modelo para PQA seleccionados y columnas".
Se supone que este modelo crea una salida personalizada para cada PQA seleccionado para cualquier conjunto de datos con la ortografía de los nombres de las columnas. Cuando se ejecuta el script, aparece una ventana emergente que le pide al usuario que seleccione columnas específicas. Esta ventana se muestra en la siguiente figura:

La siguiente ventana le pide al usuario que configure los PQA, la condición de almacenamiento y le pregunta si desea ver el subconjunto de datos para cada PQA, condición de almacenamiento o no. Es decir, para cada PQA seleccionado, se crea un subconjunto de datos en segundo plano. Luego, los resultados del modelo y el gráfico se producen y luego se agregan en cada iteración del ciclo for a una ventana con los datos personalizados y formateados (con las líneas del eje y LSL y USL y etiquetas del eje y con medidas).

Aquí está el código de secuencia de comandos JSL que produce la salida dada la entrada del usuario desde las ventanas mencionadas anteriormente:
//select the data in the original data table
Names Default To Here( 1 );
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array( col9 ) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Con mi ventana de salida creada, quiero poder guardar el script en la tabla de datos original con todos los datos (de los que dependen los datos del subconjunto). Sin embargo, cuando guardo las secuencias de comandos para todos los resultados en la ventana de secuencias de comandos, obtengo los siguientes resultados:
Observe la
Where ( :PQA == pqa_val & column(listDT, set_storage_condition_col) == selected_stor_cond )
declaración no permite que el script funcione.
Quiero que esta declaración en este script tenga un resultado particular. Por ejemplo, en el conjunto de datos de juguetes que he adjuntado, el
column(listDT, set_storage_condition_col)
es igual a :Condición de almacenamiento
Además, si tuviera que seleccionar A como el pqa_val ( así que eso :PQA == "A" ) y 5C como el seleccionado_almacenamiento_cond (así que eso :Condición de almacenamiento == "5C" ).
Sin embargo, el script de salida producido no existiría, aunque me refiero a la entrada del usuario. ¿Por qué JMP no está escribiendo estos valores como en este ejemplo anterior en el script para cada instancia particular en el bucle?
Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute debería ayudarte. Además, << Cerrar ventana no es necesario al presionar botones, ya que está utilizando ventanas modales.
Agregué una Eval(EvalExpr()) y algunas Expr() alrededor y dentro de la instrucción where.:
Ver más...
//select the data in the original data table
Names Default To Here(1);
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array(col9) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Muchas gracias. Ni siquiera pensé en usar Eval() y relacionados. Definitivamente leeré más sobre esto y echaré un vistazo al enlace que proporcionaste.