Hola comunidad,
Hice una pregunta relacionada con esto ayer y obtuve excelentes respuestas. Sin embargo, me encontré con problemas al intentar implementar la solución. Después de pasar innumerables horas, estoy pidiendo más ayuda.
Aquí está el escenario.
Tengo una tabla de datos (adjunta) con las siguientes columnas y filas:

1. Me gustaría recorrer cada columna a la vez a partir de la columna "fruta" y trazar un gráfico logístico por "ubicación" y enviar el resultado a un diario.
2. Me gustaría eliminar por completo las estadísticas de resumen que vienen con los gráficos usando JSL.
Puedo hacer el paso 1 sin problemas. A continuación se muestra mi código:
dt=open("$\fruit_drink.jmp");
colList = dt << Get Column Names();
For( i = 3, i <= Nitems( colList ), i++,
obj = Logistic(
Y( colList[i] ),
X( :Day ),
By( :location),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Min( 35.2151394422311 )} ),
Dispatch(
{},
"FitNom Plot",
FrameBox,
{Marker Size( 4 ), Row Legend(
colList[i],
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
obj << journal;
);Obtengo este resultado (hay más gráficos con estadísticas resumidas, simplemente no puedo incluirlos todos aquí):

Traté de implementar la siguiente solución para eliminar las estadísticas (según la ayuda anterior que recibí de la comunidad JMP).
dt=open("$\fruit_drink.jmp");
colList = dt << Get Column Names();
For( i = 3, i <= Nitems( colList ), i++,
obj = Logistic(
Y( colList[i] ),
X( :Day ),
By( :location),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Min( 35.2151394422311 )} ),
Dispatch(
{},
"FitNom Plot",
FrameBox,
{Marker Size( 4 ), Row Legend(
colList[i],
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>Cuando ejecuto este script, obtengo un bucle infinito y tuve que terminar JMP. Cuando coloco los bucles for internos en el exterior, no pasa nada, las estadísticas de resumen no se eliminan.
¿Alguien me puede ayudar?
Gracias.
Solución simple.El segundo bucle For() en el script se encuentra dentro del primer bucle For(), y ambos usaban "i" como variable de índice.Entonces, el segundo bucle estaba configurando continuamente el valor de i de nuevo a un valor menor que el valor de parada en el bucle exterior (primero).
Aquí está la solución simple
Names Default To Here( 1 );
dt = data table( "fruit_drink" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
Hola txnelson,
Adjunto mi tabla de datos. Es extraño que te funcione bien.
Gracias.
No hizo eso en mi prueba del código que envié.¿Puedes publicar tu tabla de datos?Supongo que el problema es un problema de datos, y si tuviera una copia de su tabla de datos, podría buscar más.
Hola txnelson,
Gracias por tomarte tu tiempo para ayudarme. Parece que su solución está cerca de lo que quiero. El único problema es que cuando se ejecuta el script, JMP entra en un bucle infinito. Sigue agregando gráficos al diario sin dejar de obligarme a cerrar la sesión.
Gracias.
Hay algunos problemas con su código
- Realmente deberías estar agregando como la primera línea en tu código
Names Default To Here( 1 );
evita que sus variables en este script interfieran con las variables del mismo nombre en otro script
- Está intentando utilizar objetos y variables antes de que se creen o después de que se hayan eliminado
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
El caso anterior es una ilustración de intentar enviar algo a un diario, antes de crear el diario.obj << close window;
For( i = 1, i <= N Items( obj ), i++,
jrn["Iterations"] << delete;
jrn["Whole Model Test"] << delete;
jrn["Parameter Estimates"] << delete;);
);
Y en este caso, estás haciendo referencia a un objeto que acabas de eliminar.
- Descubrí que, en algunos casos, no hay una tabla de iteraciones y el código fallaría, por lo que agregué una función Try() alrededor de algunas de las declaraciones.
For( i = 1, i <= N Items( obj ), i++,
Try( jrn["Iterations"] << delete );
Try( jrn["Whole Model Test"] << delete );
Try( jrn["Parameter Estimates"] << delete );
);
Try( obj << close window );
La función Try () hace lo que dice, simplemente "intenta" hacer la declaración, pero si no puede hacerlo, simplemente continúa.
- También pareció intentar una segunda forma de agregar su código al diario.
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
Supongo que no es obligatorio, y solo está allí debido al problema de intentar cargarlo en la revista antes de que se creara.
Así que aquí hay una reelaboración de su código.
Names Default To Here( 1 );
dt = Open( "$\fruit_drink.jmp" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>