Ciao Comunità,
Ieri avevo posto una domanda correlata a questo e ho ottenuto ottime risposte. Tuttavia, ho riscontrato problemi durante il tentativo di implementare la soluzione. Dopo aver trascorso innumerevoli ore, chiedo ulteriore aiuto.
Ecco lo scenario.
Ho una tabella di dati (in allegato) con le seguenti colonne e righe:

1. Vorrei scorrere ogni colonna alla volta a partire dalla colonna "frutta" e tracciare un grafico logistico per "posizione" e inviare l'output a un diario.
2. Vorrei rimuovere completamente le statistiche di riepilogo fornite con i grafici utilizzando JSL.
Posso fare il passaggio 1 senza problemi. Di seguito è riportato il mio codice:
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;
);Ottengo questo output (ci sono più grafici con statistiche di riepilogo, non riesco a inserirli tutti qui):

Ho provato a implementare la seguente soluzione per rimuovere le statistiche (basato sull'aiuto precedente che ho ricevuto dalla comunità 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>Quando eseguo questo script, ottengo un ciclo infinito e ho dovuto terminare JMP. Quando metto i cicli for interni all'esterno, non succede nulla, le statistiche di riepilogo non vengono rimosse.
Qualcuno può aiutarmi?
Grazie.
soluzione semplice.Il secondo ciclo For() nello script si trova all'interno del primo ciclo For() ed entrambi utilizzavano "i" come variabile di indice.Quindi il secondo ciclo impostava continuamente il valore di i su un valore inferiore al valore di arresto nel ciclo esterno (primo).
Ecco la semplice soluzione
Names Default To Here( 1 );
dt = data table( "fruit_drink" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
Ciao Txnelson,
In allegato la mia tabella dei dati. Strano che ti vada bene.
Grazie.
Non lo ha fatto nel mio test del codice che ho inviato.Puoi postare la tua tabella dei dati.Presumo che il problema sia un problema di dati e se avessi una copia della tua tabella di dati potrei guardare oltre.
Ciao Txnelson,
Grazie per aver dedicato del tempo ad aiutarmi. Sembra che la tua soluzione sia vicina a quello che voglio. L'unico problema è che durante l'esecuzione dello script, JMP va in un ciclo infinito. Continua ad aggiungere grafici al diario senza smettere di costringermi a interrompere la sessione.
Grazie.
Ci sono alcuni problemi con il tuo codice
- Dovresti davvero aggiungere come prima riga nel tuo codice
Names Default To Here( 1 );
impedisce alle tue variabili in questo script di interferire con le stesse variabili denominate in altri script
- Si sta tentando di utilizzare oggetti e variabili prima che vengano creati o dopo che sono stati eliminati
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
Il caso precedente è un'illustrazione del tentativo di inviare qualcosa a un diario, prima di creare il diarioobj << close window;
For( i = 1, i <= N Items( obj ), i++,
jrn["Iterations"] << delete;
jrn["Whole Model Test"] << delete;
jrn["Parameter Estimates"] << delete;);
);
E in questo caso, stai facendo riferimento a un oggetto che hai appena eliminato
- Ho scoperto che in alcuni casi non esiste una tabella Iterazioni e il codice si interrompeva, quindi ho aggiunto una funzione Try () attorno ad alcune delle istruzioni.
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 funzione Try() fa quello che dice, semplicemente "Prova" a fare l'istruzione, ma se non può farlo, continua ad andare avanti.
- Sembrava anche che tu tentassi un secondo modo per aggiungere il tuo codice al diario.
obj << journal;
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>
Presumo che non sia richiesto ed è presente solo a causa del problema del tentativo di caricamento sul diario prima che fosse creato.
Quindi ecco una rielaborazione del tuo codice.
Names Default To Here( 1 );
dt = Open( "$\fruit_drink.jmp" );
colList = dt << Get Column Names();
jrn = New Window( "The Journal", <<JOURNAL></JOURNAL>