Ciao a tutti,
Ho difficoltà con il riferimento corretto a un report quando provo a inviare al report il comando <
Ho uno script automatizzato per eseguire determinate analisi e in questo script ottengo un elenco dei report aperti per ottenere report_of_interest, vedere JSL di seguito:
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);report_of_interest è un riferimento a DisplayBox[HeadBox] del report. Utilizzando questo riferimento, posso eseguire operazioni come inviare il comando per eseguire una simulazione di una colonna di interesse nel report, ad esempio la colonna di stima dei parametri.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
Tuttavia, quando provo a inviare il comando <
report_of_interest << (Fit[1] << Save Simulation Formula)
Ottengo il seguente errore nella finestra di registro:
L'oggetto 'HeadBox' non riconosce il messaggio 'Invia'; forse intendi uno di questi: <<<<<<<<<<<< <<<<<<<<<<< <
Se provo a utilizzare il titolo della struttura, la variabile profilo_titolo di cui sopra, ottengo il seguente errore nel registro:
Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di 'Invia', delinea_title << /*###*/(Fit[1] << Salva formula di simulazione) /*###*/
Quello che non capisco è la differenza nel riferimento agli esempi nella guida dell'indice di scripting rispetto al mio codice JSL. Dal primo esempio nella guida di Scripting Index è il seguente:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
La fm è una variabile che fa riferimento a quanto segue: Fit Generalized[]. Negli esempi di Scripting Index, sono tutti in grado di salvare la colonna di simulazione nella tabella dati utilizzando questo riferimento.
Una grande differenza che posso vedere è che negli esempi sono tutti in grado di inviare alla tabella dati il comando Fit Model () con il sottocomando Run(Fit()). Non posso farlo nel mio codice JSL poiché è più generalizzato e non lo eseguo sempre sulle stesse colonne per i fattori Y, Risposta e X.
L'analogo JSL nel mio codice è il seguente:
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
Tieni presente che non ho alcun effetto elencato perché questi possono cambiare a seconda della tabella dati con cui sto lavorando. Prima ho una sezione di codice che chiede di indicare quale colonna è la colonna di risposta e, pertanto, posso includere Y(Eval(ycols)) in Fit Model() perché il codice JSCL ha un riferimento a quella colonna.
Sfortunatamente, non posso fare nulla come fm = avdt << Fit Model() e fare riferimento in questo modo perché una volta inseriti tutti gli effetti e fatto clic su Esegui nella finestra della piattaforma GenReg, fm restituisce l'errore che si tratta di un oggetto eliminato riferimento[]. Infatti, se commenti la riga con Run() nell'esempio dalla guida dell'indice di scripting e lo esegui, fai clic su Esegui nella finestra di dialogo Stima modello, il codice di esempio non salverà la colonna di simulazione nella tabella dati.
Scusate per il post lungo, ma sentivo il bisogno di contestualizzare il problema che sto riscontrando. Qualsiasi aiuto per correggere il riferimento corretto del report_of_interest, in modo da poter inviare la <
Grazie!,
DS