Per qualche motivo, uno script che funzionava si è interrotto (sia in JMP 16 che in 17) e ora ricevo il seguente errore
subscripted key not in map in access or evaluation of 'aaa (bbb) [ccc]' , "aaa (bbb) [ccc]"
Ho un piccolo script che rinomina le colonne di una tabella secondaria in una tabella primaria. Innanzitutto, viene creato un array associativo (non mostrato).
Quindi itero attraverso le colonne.
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 );
);
Non sono sicuro di quale possa essere il motivo. Quando si utilizza il debugger, posso vedere che la chiave esiste nel dizionario.
Questo errore si verifica con più colonne che, a me, sembrano stringhe identiche.
Le chiavi devono essere esatte, inclusi gli spazi bianchi. La funzione hex() potrebbe essere utile per esaminare le chiavi. Qualcosa come questo
try( ... use the aa with key ...
, // catch errors, show the keys
show(exception_msg, hex(key), char(aa));
)
A volte lascio try(...) nel mio JSL, quindi quando si verifica un errore imprevisto ci saranno informazioni migliori nel registro. Ciò è particolarmente utile quando la chiave o aa potrebbe essere una variabile locale in una funzione o un ciclo for migliorato e scomparire dopo il messaggio di errore.