Ausführen eines Skripts mehrmals mit unterschiedlichen Eingaben.Hi
Ich habe ein Skript geschrieben, das einige Daten abruft, einige Manipulationen vornimmt (wie Sortieren, Ordnen, Teilmengen usw.) und schließlich die Daten zeichnet.
Dieses Skript muss mehrmals mit unterschiedlichen Eingaben ausgeführt werden. Wie kann ich das tun?
Das habe ich versucht -
in_list = {};
in_list = Associative array(dtin:input) << get keys //this is to get all inputs into a list
for(i=1,i<NITEMS></NITEMS>
Das Skript wird jedoch nur für die erste Eingabe ausgeführt.
Außerdem speichere ich jede Ausgabe mit einem anderen Dateinamen.
Betreff: Skript mehrmals mit unterschiedlichen Eingaben ausführen.Codieren Sie den Tabellennamen nicht fest in den Join.Verwenden Sie stattdessen einen Variablennamen.Verwenden Sie zB nicht Data Table("Table Namen1") << Join("Table Name2",...), sondern dt << Join(dt2,...).Wenn Sie das tun, können Sie Ihre Datentabellenvariablen immer auf die richtige Datentabelle für die aktuelle Schleifeniteration verweisen lassen.
Sie sollten auch sicherstellen, dass alle Zwischendatentabellen geschlossen werden, wenn Sie sie nicht mehr benötigen, so wie Sie es bei der Lösung Ihres Problems beschrieben haben.Halten Sie JMP so übersichtlich wie möglich.
Betreff: Skript mehrmals mit unterschiedlichen Eingaben ausführen.Danke für die Antwort. Nach weiterem Debuggen fand ich die Ursache meines Problems.
Problemstellung: Während der Ausführung in der Schleife wird die Eingabeauswahl aktualisiert, aber das Diagramm ist für alle Eingabeoptionen gleich.
Tiefere Ursache: Ich habe Verknüpfungen im Skript. Jedes Mal, wenn das Skript ausgeführt wird, werden die Tabellen mit dem Suffix 1,2 usw. gespeichert.
Da die Verknüpfungslogik jedoch den ursprünglichen Tabellennamen hat, werden die Tabellen nicht aktualisiert. Jedes Mal, wenn die Tabellen mit den ursprünglichen Tabellen (bei der ersten Ausführung erstellte Tabellen) verknüpft werden, ist das Ausgabediagramm dasselbe.
Lösung: Ich habe Try(close(out_table,no save)) versucht, aber ohne Erfolg.
Jede Hilfe in dieser Hinsicht wird geschätzt.
Betreff: Skript mehrmals mit unterschiedlichen Eingaben ausführen.So etwas sollte man wirklich nicht brauchen.Wenn Sie bereit sind, ein vollständigeres Skript zu veröffentlichen, kann ich Ihnen helfen, festzustellen, wo Ihr Problem liegt.Stop() beendet die Ausführung des gesamten Skripts vollständig.Break() beendet die Ausführung einer Schleife. Continue() ist ziemlich genau das, was Sie beschrieben haben; es unterbricht die aktuelle Iteration und kehrt zum Anfang der Schleife zurück.
Betreff: Skript mehrmals mit unterschiedlichen Eingaben ausführen.Danke für die Antwort.
Ich dachte, dass ich eine stop() in einer if-Anweisung innerhalb einer for-Schleife habe, die Probleme verursacht.
Habe es durch Continue() ersetzt, aber das löst das Problem nicht.
Gibt es eine Funktion, die nur die aktuelle Iteration stoppen und mit der nächsten fortfahren kann?
Vielen Dank
Betreff: Skript mehrmals mit unterschiedlichen Eingaben ausführen.Ihr fehlt ein Semikolon in der zweiten Zeile, aber ich nehme an, Sie haben eines in Ihrem eigentlichen Skript.Das Problem liegt wahrscheinlich in Ihrer Schleife (übrigens sollte das zweite Argument Ihrer for-Schleife wahrscheinlich "<=" und nicht "<" sein, sonst verpassen Sie das letzte Element in Ihrer Liste).Hier ist ein wirklich einfaches Beispiel für ein funktionierendes Skript, das Ihren Ansatz verwendet:
Zuerst habe ich eine Tabelle erstellt, um einige Eingaben zu erhalten:
Dann führe ich dieses Skript aus:
dt = Current Data Table();
in_list = Associative Array(dt:input) << get keys;
for(i=1, i<=N Items(in_list), i++,
Print(in_list[i]);
);
Hier ist die Log-Ausgabe:
Es könnte Ihnen helfen, eine Funktion zu schreiben, die Sie innerhalb der Schleife jedes Mal mit unterschiedlichen Werten für die Argumente auswerten können.Auf diese Weise können Sie die Funktion außerhalb der Schleife entwickeln und testen, sodass die Fehlersuche einfacher ist.