Aus irgendeinem Grund wurde ein funktionierendes Skript gestoppt (sowohl in JMP 16 als auch in 17) und jetzt erhalte ich die folgende Fehlermeldung
subscripted key not in map in access or evaluation of 'aaa (bbb) [ccc]' , "aaa (bbb) [ccc]"
Ich habe ein kleines Skript, das die Spalten einer Sekundärtabelle in eine Primärtabelle umbenennt. Zunächst wird ein assoziatives Array erstellt (nicht dargestellt).
Dann iteriere ich durch die Spalten.
new_colNames = dt_secondary << Get Column Names( "String" );
Print( "Iterating through new column names" );
For( i = 1, i <= N Items( new_colNames ), i++,
new_colName = new_colNames[i];
Print( "Changing name for column:", new_colName );<BR /><BR /> // error trying to access key in the following line
user_colname = dict_colNames << Get Value( new_colName );<BR /><BR /> Print( "To user column name:", user_colname );
Column( dt_transposed, new_colName ) << Set Name( user_colname );
);
Ich bin mir nicht sicher, was der Grund sein kann. Wenn ich den Debugger verwende, kann ich sehen, dass der Schlüssel im Wörterbuch vorhanden ist.
Dieser Fehler tritt bei mehreren Spalten auf, die für mich wie identische Zeichenfolgen aussehen.
Die Schlüssel müssen exakt sein, einschließlich Leerzeichen. Die Funktion hex() kann zum Untersuchen der Schlüssel hilfreich sein. Etwas wie das
try( ... use the aa with key ...
, // catch errors, show the keys
show(exception_msg, hex(key), char(aa));
)
Manchmal belasse ich try(...) in meiner JSL, damit im Protokoll bessere Informationen angezeigt werden, wenn ein unerwarteter Fehler auftritt. Das ist besonders nützlich, wenn der Schlüssel oder aa eine lokale Variable in einer Funktion oder einer erweiterten for-Schleife ist und nach der Fehlermeldung verschwunden ist.