Betreff: JSL: Skript zum Ändern des Zeilenzustands funktioniert nichtDie Spaltenformeln von JMP werden im Hintergrund ausgewertet. Für Tabellen mit komplizierten Formeln und vielen Zeilen ermöglicht dies, dass JMP während der Formelauswertungen interaktiv bleibt. Sie können durch die Tabelle scrollen und mit anderen Tabellen und Plattformen arbeiten.
Durch das Senden der Nachricht << runFormulas an die Tabelle wird die Auswertung der Formeln abgeschlossen, bevor etwas anderes passiert. Die Verwendung von wait (N) ist keine gute Antwort, da nicht bekannt ist, wie lange gewartet werden muss. Ich habe versucht zu warten (0) und das war nicht lange genug. Eine Sekunde Wartezeit hat funktioniert, war aber viel länger als nötig. << runFormulas führt die Formeln nicht erneut aus, wenn sie bereits ausgewertet wurden. Sie können sie also verwenden, ohne sich Gedanken über die Verlangsamung des JSL-Codes zu machen.
In Ihrem Beispiel wird die JSL noch ausgeführt, und zum Zeitpunkt des Kopierens der Formelspalte gab es keine Möglichkeit für die Hintergrundverarbeitung der Spaltenformeln. Wenn Sie die letzte Zeile separat ausführen, erfolgt die Hintergrundauswertung vor der Ausführung der letzten Zeile, sodass die Zeilenzustände mit den berechneten Werten aktualisiert werden.
Häufig ist sich JMP bewusst, wann Formeln die Auswertung beenden müssen. Zum Beispiel das Starten einer neuen Plattform. << CopyToRowStates ist noch nicht bekannt. Vielen Dank für den Hinweis.
Ich habe mit wait (0) keinen Absturz festgestellt. Wenn der Absturz reproduzierbar ist, wenden Sie sich an den technischen Support, um das Skript und die Absturzberichtsdateien einzusenden.
Betreff: JSL: Skript zum Ändern des Zeilenzustands funktioniert nichtmit wait (0); JMP stürzt ab. Formeln ausführen, funktioniert.
Vielen Dank! Trotzdem kann ich mich immer noch nicht darum kümmern, warum
Um es zusammenzufassen:
1) Ich erstelle eine Zufallszahl
2) Ich erstelle Reihenzustandsspalten basierend auf den Zufallszahlen
3) Ich ordne Zeilenzustände basierend auf den Zeilenzustandsspalten zu
Gibt es einen bestimmten Grund, warum 2) ausgeführt werden kann, ohne dass nach 1) 'Laufformeln' angegeben werden müssen? Damit 3) jedoch funktioniert, muss ich nach 2) Laufformeln angeben. Gibt es einen logischen Grund oder ist dies eine der vielen undokumentierten Macken der JSL-Skriptsprache?
Betreff: JSL: Skript zum Ändern des Zeilenzustands funktioniert nichtVersuchen Sie zu senden die Nachricht Führen Sie Formeln aus zur Datentabelle. Diese Nachricht schließt alle Formelauswertungen ab, bevor mit der nächsten JSL-Anweisung fortgefahren wird.
dt << run formulas;
Wenn dies nicht funktioniert, versuchen Sie stattdessen, wait (0) zu setzen.
JSL: Skript zum Ändern von Zeilenzuständen funktioniert nichtIch habe dieses einfache Skript zusammengestellt, um eine Datentabelle in Trainings-, Test- und Validierungs-Teilmengen zu unterteilen, indem ich Zeilenstatusspalten erstellt habe.
Ich habe dann eine Codezeile am Ende, die die Zeilenzustände aus der Zeilenspalte 'Trainingssatz' kopieren soll.
Das Seltsame ist, dass Zeilenzustände nicht kopiert werden, wenn ich das gesamte Skript ausführe. Wenn ich zuerst alles außer der letzten Zeile und dann die letzte Zeile separat ausführe, funktioniert es.
Irgendwelche Ideen, wie man das behebt? Vermisse ich etwas oder ist es ein Fehler?
Vielen Dank!
New Column( "Random", Numeric, Formula( Random Uniform() ) );
New Column( "Data Set Indicator",
Character,
Formula( If( :Random <= 0.6, "Training", 0.6 < :Random <= 0.8, "Validation", "Test" ) )
);
New Column( "Training set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Training" ),
Hidden State( :"Data Set Indicator" != "Training" )
)
)
);
New Column( "Validation set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Validation" ),
Hidden State( :"Data Set Indicator" != "Validation" )
)
)
);
New Column( "Test set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Test" ),
Hidden State( :"Data Set Indicator" != "Test" )
)
)
);
Column( "Training set" ) << Copy to row states();
Betreff: JSL: Skript zum Ändern von Zeilenzuständen funktioniert nichtAufgrund dieses Threads wird seit JMP 12 die Nachricht << Run Formulas () automatisch hinter den Kulissen mit einer neuen Tabelle () aufgerufen.