Re: JSL: script para cambiar los estados de fila no funcionaLas fórmulas de columna de JMP se evalúan en el fondo; para tablas con fórmulas complicadas y muchas filas, esto permite que JMP permanezca interactivo durante las evaluaciones de fórmulas. Puede desplazarse por la tabla y trabajar con otras tablas y plataformas.
Enviar el mensaje << runFormulas a la tabla hace que las fórmulas terminen de evaluarse antes de que ocurra algo más. Usar esperar (N) no es una gran respuesta porque no hay manera de saber cuánto tiempo esperar. Intenté esperar (0) y eso no fue lo suficientemente largo. Una espera de un segundo funcionó, pero fue un poco más larga de lo necesario. << runFormulas no vuelve a ejecutar las fórmulas si ya han terminado de evaluar, por lo que puede usarlas sin tener que preocuparse por hacer que el código JSL sea más lento.
En su ejemplo, la JSL todavía se está ejecutando, y no ha habido ninguna oportunidad para el procesamiento en segundo plano de las fórmulas de la columna en el momento en que se copia la columna de la fórmula. Si ejecuta la última línea por separado, la evaluación en segundo plano ocurre antes de que se ejecute la última línea, por lo que los estados de las filas se actualizan con los valores calculados.
A menudo, JMP es consciente de cuándo las fórmulas deben terminar de evaluar; Lanzando una nueva plataforma, por ejemplo. << CopyToRowStates no es consciente, todavía. Gracias por mencionarlo.
No vi un fallo usando la espera (0). Si el bloqueo es reproducible, trabaje con el soporte técnico para enviar el script y los archivos de informe de bloqueo.
Re: JSL: script para cambiar los estados de fila no funcionacon espera (0); JMP se bloquea. Ejecutar fórmulas, obras.
¡Gracias! Sin embargo, todavía no puedo entender por qué
Recordar:
1) creo un número al azar
2) Creo columnas de estado de fila basadas en los números aleatorios
3) Asigno estados de fila basados en las columnas de estado de fila
¿Alguna razón particular por la que 2) pueda ejecutarse sin la necesidad de especificar 'fórmulas de ejecución' después de 1), pero para que 3) funcione, debo especificar fórmulas de ejecución después de 2)? ¿Existe una razón lógica o es esta una de las muchas peculiaridades no documentadas del lenguaje de script JSL?
Re: JSL: script para cambiar los estados de fila no funcionaIntenta enviar el mensaje Ejecutar fórmulas a la tabla de datos. Este mensaje completa todas las evaluaciones de fórmulas antes de pasar a la siguiente declaración JSL.
dt << ejecutar fórmulas;
Si eso no funciona, intente poner en espera (0) en su lugar.
JSL: el script para cambiar los estados de fila no funcionaCreé este script simple para dividir una tabla de datos en subconjuntos de entrenamiento, prueba y validación, creando columnas de estado de fila.
Luego tengo una línea de código al final para copiar los estados de fila de la columna de estado de fila 'Conjunto de entrenamiento'.
Lo extraño es que si ejecuto todo el script, los estados de fila no se copian. Si ejecuto todo menos la última línea primero, y luego la última línea por separado, entonces funciona.
¿Alguna idea sobre cómo solucionar este problema? ¿Me estoy perdiendo algo o es un error?
¡Gracias!
New Column( "Random", Numeric, Formula( Random Uniform() ) );
New Column( "Data Set Indicator",
Character,
Formula( If( :Random <= 0.6, "Training", 0.6 < :Random <= 0.8, "Validation", "Test" ) )
);
New Column( "Training set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Training" ),
Hidden State( :"Data Set Indicator" != "Training" )
)
)
);
New Column( "Validation set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Validation" ),
Hidden State( :"Data Set Indicator" != "Validation" )
)
)
);
New Column( "Test set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Test" ),
Hidden State( :"Data Set Indicator" != "Test" )
)
)
);
Column( "Training set" ) << Copy to row states();
Re: JSL: script para cambiar estados de fila no funcionaComo resultado de este hilo, desde JMP 12, el mensaje << Ejecutar fórmulas () se llama automáticamente detrás de escena con una Nueva tabla ().