Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript ein.Mein JSL-Skript besteht aus drei Teilen. Im ersten Teil erstelle ich eine numerische Spalte (Spalte A) mit 100 Zeilen, die mit zufälligen Ganzzahlen zwischen 50 und 1000 gefüllt sind.
Im 2. Teil extrahiere ich die maximale Zahl in Spalte A und speichere sie in einer Variablen i.
Im dritten Teil verwende ich i, um eine For-Schleife zu erstellen, die i neue Spalten in derselben Tabelle erstellt. Wie kann ich das machen?
Es scheint, dass ich die Daten in i speichern kann, aber die For-Schleife läuft nicht.
Automatisierung und SkriptingWindowsBetreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einHier ist ein wirklich einfaches Beispiel …
Names Default To Here( 1 );
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << New Column( "A", formula( Random Integer( 50, 1000 ) ) );
i = Col Max( dt:A );
For( k = 1, k <= i, k++,
dt << New Column( "col" || Char( k ) )
);
Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einDa ich keinen Zugriff auf JMP14 habe, muss ich einfach raten, was anders sein könnte.
Möglicherweise wird die Schleife überhaupt nicht ausgeführt -> Debug-Druck für max hinzufügen
Names Default To Here(1);
dt = New Table("",
Add Rows(100),
New Column("ColumnA", Numeric, Continuous, Formula(Random Integer(50, 1000)))
);
max = Col Max(Column(dt, "ColumnA"));
Show(max);
For(i = 1, i <= max, i++,
Show(i);
);
In einem anderen Debug-Fall versuchen Sie eine Schleife ohne die Tabelle.
Names Default To Here(1);
max = 10;
For(i = 1, i <= max, i++,
Show(i);
);
Wenn JMP14 einen Debugger hätte (und Sie können diesen zum Laufen bringen, da das nicht so einfach sein könnte), könnten Sie auch versuchen,

Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einWenn ich dies ausführe, sehe ich im Protokoll nur /*;.
Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einErhalten Sie eine Fehlermeldung? Werden Ihre Spalten erstellt, haben aber falsche Werte? Sie sagten, dass die For-Schleife nicht ausgeführt wird, aber jetzt werden keine Spalten erstellt (das sind höchstwahrscheinlich separate Probleme). Wenn Sie Show(i); in Ihre Schleife einfügen, werden diese Werte dann korrekt in das Protokoll gedruckt?
Names Default To Here(1);
dt = New Table("",
Add Rows(100),
New Column("ColumnA", Numeric, Continuous, Formula(Random Integer(50, 1000)))
);
max = Col Max(Column(dt, "ColumnA"));
For(i = 1, i <= max, i++,
Show(i);
);Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einDieser Code hat das gleiche Problem wie mein Code. Wenn ich Ihren Code ausführe, werden die Spalten, die von der For-Schleife erstellt werden sollten, nicht erstellt. Ich verwende JMP 14, also eine etwas ältere Version.
Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einSie haben Ihren Code nicht gepostet, daher ist es schwierig zu sagen, was falsch ist. Hier ist ein funktionierendes Beispiel
Names Default To Here(1);
dt = New Table("",
Add Rows(100),
New Column("ColumnA", Numeric, Continuous, Formula(Random Integer(50, 1000)))
);
max = Col Max(Column(dt, "ColumnA"));
For(i = 1, i <= max, i++,
dt << New Column(Char(i), Numeric, Continuous, Set Each Value(i));
);Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einHier ist die Maximalwertextraktion aus Spalte A.
X = Eval(Col Max(:Name("Spalte A")));
Wenn ich das dann als „for (i=1, i<=X ...)“ verwende,
Diese For-Schleife wird nicht ausgeführt. Ich habe überprüft, ob X die richtige Nummer meldet.
Betreff: Extrahieren Sie die maximale Zahl aus einer Spalte und geben Sie sie in eine For-Schleife im selben JSL-Skript einKönnten Sie posten, was Sie versucht haben?