Nach dem Ausführen einer allgemeinen Abfrage zum Sammeln vieler Daten mit allgemeinen Headern von bin01, bin02, ... bin16 möchte ich Spaltenüberschriften basierend auf einer anderen Tabelle aktualisieren, die Bin-Informationen basierend auf dem Rezept enthält. Dies scheint mit einem Munger-Befehl eine einfache Aufgabe zu sein, aber es treten Fehler auf, wenn es in eine verschachtelte Schleife eingefügt wird. Dieselbe Syntax funktioniert in einem Einzelschleifenformat, aber da eine variable Anzahl von Bin-Werten (1 bis 16) ersetzt werden muss, ist eine Schleifenstruktur vorzuziehen. Ich habe Beispieldatentabellen und JSL angehängt. Empfehlungen sind willkommen. Arbeite an diesem Problem mit JMP16.1
Hier ist eine Überarbeitung Ihres Skripts, das mit Ihren Beispieldatentabellen funktioniert.Die wichtigste Änderung ist die Hinzufügung der Try()-Funktion, die verhindert, dass der Code stoppt, wenn ein Fehler innerhalb von Set() auftritt.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Need to update data table based on bins in recipe, name and get rid of Bin Cols no data was collected, bins greater that number defined by bin size list
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Referance: https://community.jmp.com/t5/JMP-Scripts/Find-amp-Replace-for-Column-Names/ta-p/217124
b = Data Table( "BinSizeList" ):Name( "CntBins" ) << get values;
Show( b );
Show( b[1] );
bnum = Data Table( "BinSizeList" ):Name( "Label" ) << get values;
Show( bnum );
bsize = Data Table( "BinSizeList" ):Name( "Bin_Label" ) << get values;
Show( bsize );
Data Table( "LPD_Data" ) << Select Columns( ALL );
cols = Data Table( "LPD_Data" ) << Get Selected Columns();
Show( cols );
// Nested loop does not work? Error on "set name" comand only when nested j loop is included. Works fine if j for statement is removed and [ j ] replaced with a valid number
For( i = 1, i <= N Items( cols ), i++,
For( j = 1, j <= b[1], j++,
Try(
cols[i] << set name(
Munger(
Char( cols[i] ), // << get name,
1,
Eval( Char( bnum[j] ) ),
Eval( Char( bsize[j] ) )
)
)
)
)
);
Vielen Dank für Ihre Hilfe.Ich hatte den TRY-Befehl noch nie gesehen.Hat super funktioniert.