Parte del código JSL no funciona en el script final, pero funciona si está aisladoAdvertencia: pregunta de nivel principiante
Tengo una tabla de datos a la que estoy agregando una columna temporal (:Parameter_new) para llenarla con entradas si se cumple una determinada condición. Las entradas que luego quiero colocar en otra columna (:Parameter_old). Mi impresión es que el código se comporta de manera diferente cuando forma parte del script final, en comparación con cuando copio líneas individuales en un script diferente. Al aplicar el código del script línea por línea, todo funciona como se esperaba. Cuando lo implemento en el script final, solo obtengo valores en blanco. ¿Dónde me estoy equivocando?
//Code works OK
dt << New Column ("Parameter_new", character);
dt << go to( :Parameter_new ) << move selected columns( After( :Parameter_old ));
For Each Row(
If(:Parameter_old == "Parameter x",
:Parameter_new = :Parameter_old || " " || "by" || " " ||:Method_description));
dt << select where(:Parameter_old == "Parameter x");
//Code does not work and deletes all entries in column "Parameter_old", i.e. cells come out blank
//Code does however work if applied individually, line by line
:Name("Parameter_old")[dt << get selected rows] = :Parameter_new;Ingeniería de Calidad y ProcesosRe: Parte del código JSL no funciona en el script final, pero funciona si está aisladoHola. Parece haber habido un cambio en la plataforma comunitaria. Nos hemos puesto en contacto con el soporte. Mientras tanto, hemos implementado una solución temporal que debería permitirle utilizar el botón como se esperaba. Gracias.
Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoTodos mis bloques de código se marcan como errores al publicar aquí en los foros de la comunidad.Específicamente, el `class=" language-jsl"` dentro del bloque se elimina, como se muestra a continuación
Names Default To Here( 1 );
x = [10, 50, 90];
y = [10, 90, 10];
New Window( "Line Seg Example", g = Graph Box( Line Seg( x, y ) ) );
frame = g[FrameBox( 1 )];
seg = (frame << Find Seg( Line Seg( 1 ) ));

Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoMe alegra que hayas podido resolver el problema. En cuanto al código de colores, parece que estás usando que está a la izquierda de en la barra de herramientas del editor.
Es posible que hayas intentado utilizar ambos en el mismo fragmento, pero solo uno funciona. He arreglado el formato en ambas publicaciones.
Re: Parte del código JSL no funciona en el script final, pero funciona si está aislado¿Me siento estúpido al aprender sobre los If ahora...?
Además, ¿por qué mi fragmento de código JSL está todo gris? ¿Cómo puedo obtener la fuente y los colores correctos?
dt2 << New Column ("Parameter_new", character);
dt2 << go to( :Parameter_new ) << move selected columns( After( :Parameter_old ));
For Each Row(
If( :Parameter_old == "Parameter x", :Parameter_new = :Parameter_old || " " || "by" || " " || :Method_description,
:Parameter_old != "Parameter x", :Parameter = :Parameter_old));Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoGracias. Parece interesante. Por favor, deme algo de tiempo antes de haber resuelto los detalles de este enfoque, poder publicar mi código inicial en forma completa y aceptar su publicación como solución.
(Además, ¿por qué mi código JSL está formateado sin color en mi publicación? Estoy usando el icono para insertar fragmentos).
Editar: publicación maravillosa sobre la suscripción. No estaba al tanto de eso, pero fue una lectura interesante. Desde entonces acepté una respuesta mía como solución, ya que intuitivamente me parecía más fácil.
Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoGracias ih, agradezco la respuesta! Probé ambos, no funcionó. Abierto a sugerencias mientras pesca en la Guía de secuencias de comandos.
Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoLa declaración final tiene una matriz en el lado izquierdo (LHS) y una columna en el lado derecho (RHS).
Tienes dos casos diferentes: dentro de ForEachRow y fuera. Si está dentro, hay una fila implícita y la columna se resuelve en un escalar. Si está fuera, no hay una fila implícita. Probablemente tenías exactamente una fila seleccionada cuando funcionaba dentro de ForEachRow.
una matriz de columnas (LHS) solo admite un escalar en el RHS. No funcionará bien con una matriz en el RHS.
Puedes usar Subíndice de tabla de datos en cambio. Eso trata la tabla como una matriz 2D (3 filas, 1 columna en este pequeño ejemplo).
dt = Open( "$sample_data/big class.jmp" );
dt[[2, 3, 4], {name}] = dt[[5, 6, 7], {name}];Re: Parte del código JSL no funciona en el script final, pero funciona si está aisladoProbablemente JMP no esté evaluando la fórmula en Parameter_new antes de pasar a la siguiente línea.Intente agregar esto después de su función Para cada fila:
dt << Run Formulas;
Además, podrías usar una espera:
Wait(0);