Hallo zusammen,
Ich habe Schwierigkeiten mit der richtigen Referenzierung eines Berichts, wenn ich versuche, den Befehl <
Ich habe ein automatisiertes Skript, um bestimmte Analysen durchzuführen, und in diesem Skript erhalte ich eine Liste der offenen Berichte, um den Report_of_Interest zu erhalten, siehe JSL unten:
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“ ist eine Referenz auf die DisplayBox[HeadBox] des Berichts. Mithilfe dieser Referenz kann ich beispielsweise den Befehl senden, um eine Simulation einer Spalte von Interesse im Bericht durchzuführen, beispielsweise einer Parameterschätzungsspalte.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
Wenn ich jedoch versuche, den Befehl <
report_of_interest << (Fit[1] << Save Simulation Formula)
Ich erhalte die folgende Fehlermeldung im Protokollfenster:
Objekt „HeadBox“ erkennt die Nachricht „Senden“ nicht; Vielleicht meinen Sie eines davon: <<<<<<<<<<<< <<<<<<<<<<< <
Wenn ich versuche, den Titel der Gliederung, die Variable „outline_title“ von oben, zu verwenden, erhalte ich die folgende Fehlermeldung im Protokoll:
Senden erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Senden“, Gliederungstitel << /*###*/(Fit[1] << Simulationsformel speichern) /*###*/
Was ich nicht verstehe, ist der Unterschied zwischen der Referenz auf die Beispiele in der Scripting Index-Hilfe und meinem JSL-Code. Aus dem ersten Beispiel in der Scripting Index-Hilfe geht Folgendes hervor:
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);
Der fm ist eine Variable, die auf Folgendes verweist: Fit Generalized[]. In den Scripting Index-Beispielen können alle mithilfe dieser Referenz die Simulationsspalte in der Datentabelle speichern.
Ein großer Unterschied, den ich erkennen kann, besteht darin, dass in den Beispielen alle den Befehl „Fit Model()“ mit dem Unterbefehl „Run(Fit())“ an die Datentabelle senden können. Ich kann das in meinem JSL-Code nicht tun, da er allgemeiner ist und ich ihn nicht immer in denselben Spalten für die Y-, Antwort- und X-Faktoren ausführe.
Die analoge JSL in meinem Code ist die folgende:
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
Beachten Sie, dass ich keine Effekte aufgelistet habe, da diese sich je nach der Datentabelle, mit der ich arbeite, ändern können. Ich habe davor einen Codeabschnitt, der angibt, welche Spalte die Antwortspalte ist, und daher kann ich Y(Eval(ycols)) in Fit Model() einschließen, da der JSCL-Code einen Verweis auf diese Spalte hat.
Leider kann ich nichts wie „fm = avdt << Fit Model()“ tun und es auf diese Weise referenzieren, denn sobald ich alle Effekte eingebe und im GenReg-Plattformfenster auf „Ausführen“ klicke, gibt fm den Fehler zurück, dass es sich um ein gelöschtes Objekt handelt Referenz[]. Wenn Sie die Zeile mit „Run()“ im Beispiel aus der Scripting Index-Hilfe auskommentieren, sie ausführen und im Dialogfeld „Modell anpassen“ auf „Ausführen“ klicken, speichert der Beispielcode die Simulationsspalte nicht in der Datentabelle.
Entschuldigen Sie den langen Beitrag, aber ich hatte das Gefühl, ich müsste etwas Kontext zu meinem Problem schaffen. Für jede Hilfe bei der Korrektur der korrekten Referenzierung des Report_of_Interest, damit ich die <
Danke!,
DS
Ein Unterschied besteht darin, dass Sie unterschiedliche Referenzen verwenden. Das Beispiel für einen Skriptindex verwendet „Fit Generalized[]“ und Sie verwenden „DisplayBox[HeadBox]“. Sie können höchstwahrscheinlich einen Verweis auf Fit Generalized erhalten, indem Sie etwas wie verwenden
report_of_interest[OutlineBox(1)] << get scriptable object;
Hallo @jthi ,
Vielen Dank wie immer für Ihre schnelle und hilfreiche Antwort! Ja, das funktioniert. Mir wurde auch klar, dass ich dies umgehen könnte, indem ich einen früheren Teil meines Codes ändere, in dem er die Modellierung der Antwortspalte anfordert, sodass gleichzeitig auch nach den Modelleffekten gefragt wird. Auf diese Weise könnte ich fm = dt<
Ich musste den Befehl „<< Get Scriptable Object“ nicht oft verwenden, daher ist es kein Befehl, der mir wirklich in den Sinn kommt. Ich schätze die Hilfe.
Danke!,
DS