Por alguna razón, un script que estaba funcionando se detuvo (tanto en JMP 16 como en 17) y ahora aparece el siguiente error
subscripted key not in map in access or evaluation of 'aaa (bbb) [ccc]' , "aaa (bbb) [ccc]"
Tengo un pequeño script que cambia el nombre de las columnas de una tabla secundaria a una tabla principal. Primero, se crea una matriz asociativa (no se muestra).
Luego repito las columnas.
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 );
user_colname = dict_colNames << Get Value( new_colName );
Print( "To user column name:", user_colname );
Column( dt_transposed, new_colName ) << Set Name( user_colname );
);
No estoy seguro de cuál puede ser el motivo. Cuando uso el depurador, puedo ver que la clave existe en el diccionario.
Este error ocurre con varias columnas que, para mí, parecen cadenas idénticas.
Las claves deben ser exactas, incluidos los espacios en blanco. La función hex() puede resultar útil para examinar las claves. Algo como esto
try( ... use the aa with key ...
, // catch errors, show the keys
show(exception_msg, hex(key), char(aa));
)
A veces dejo el try(...) en mi JSL para que cuando ocurra un error inesperado haya mejor información en el registro. Esto es especialmente útil cuando la clave o aa puede ser una variable local en una función o un bucle for mejorado y desaparecer después del mensaje de error.