Re: Función de valor de mapa: resultados incorrectos para diferentes caracteresA veces, JMP / JSL puede ser extraño en la forma en que maneja las expresiones; por ejemplo, muchas veces en una función de envío, los argumentos se envían sin evaluar.Aunque no hay una función de envío aquí, parecería que algo dentro del Filtrar cada uno() o Valor del mapa () maneja los argumentos de una manera extraña y maneja la búsqueda de manera extraña.
Básicamente, no puedo decir que sea un error, pero parece extraño.Si yo fuera usted, me pondría en contacto con el soporte de JMP y les mostraría que la primera llamada (ya sea la {"b",1,2,3"} o el {"d",1,2,3} ) funciona, mientras que el segundo no funciona.Posible que sea un error.
Aquí hay una solución alternativa:
wrap = Function( {filtered list, na_list},
{Default Local},
na_values = {};
For Each( {value}, na_list,
Insert Into( na_values, value );
Insert Into( na_values, 1 );
);
Eval( Eval Expr( Filter Each( {value}, filtered list, Map Value( value, Expr( na_values ), Unmatched( 0 ) ) == 0 ) ) );
);
Re: Función de valor de mapa: resultados incorrectos para diferentes caracteresNo estoy seguro de cómo hizo funcionar su función sin inicializar primero na_value como una lista vacía.Esto funciona:
names default to here(1);
filtered list = {"d",1, 2, 3};
na_list = {"d"};
na_values = {}; // <--- missing
For Each( {value}, na_list,
na_values=Insert(na_values,value);
na_values=Insert(na_values,1);
);
f = Filter Each({value}, filtered list,
Map Value(value, na_values, Unmatched(0))==0;
);
show(f);Re: Función de valor de mapa: resultados incorrectos para diferentes caracteresHola, tienes razón, eliminé la inicialización de na_values de mi función de prueba.
Pero el problema existe si agrego la inicialización de na_values a la función:
wrap = function({filtered list,na_list}, {Default Local},
<STRONG>na_values={}</STRONG>;For Each( {value}, na_list, na_values=Insert(na_values,value);na_values=Insert(na_values,1););
return(Filter Each({value}, filtered list, Map Value(value, na_values, Unmatched(0))==0;));
);
Show(wrap({"b",1, 2, 3},{"b"})); // = {1, 2, 3}=> OK
Show(wrap({"d",1, 2, 3},{"d"})); // = {"d", 1, 2, 3} => Not OK ! => expected {1, 2, 3}Por favor, intente usted mismo el código anterior.
Re: Función de valor de mapa: resultados incorrectos para diferentes caracteresen tu ejemplo
Show(wrap({"b",1, 2, 3},{"b"}));
Show(wrap({"d",1, 2, 3},{"d"}));
no da los resultados correctos para la segunda llamada.
Pero esto funciona:
Show(wrap({"d",1, 2, 3},{"d"}));
Lo que sugeriría que no debería necesitar lanzar evaluaciones por todos lados.
El problema es que la primera llamada a la función funciona y las llamadas posteriores fallan; lo cual es muy extraño.
Re: Función de valor de mapa: resultados incorrectos para diferentes caracteresGracias por su respuesta. Como ha dicho, la primera llamada funciona, las llamadas posteriores fallan.
Llamé a nuestro soporte de JMP sobre este problema, que le ha dado este problema a su equipo de soporte técnico. Si tengo alguna noticia al respecto la publicaré aquí.
Función Map Value: resultados inconsistentes para llamadas posterioresHola,
Soy nuevo en JMP 16 y JSL pero soy un programador experimentado.
Por alguna razón, quiero usar la función "Valor del mapa", pero esto me da resultados incorrectos.
Lo que quiero lograr es eliminar los elementos no deseados dados como una lista de una lista que contiene números y cadenas
La siguiente función construye una lista para "Valor del mapa" llamada na_values en la forma {opción1, 0, opción2, 0, ...} de na_list, por ejemplo, {opción1, opción2,...}
y lo filtra usando "Filtrar cada" y la función Map Value".
wrap = function({filtered list,na_list}, {Default Local},
na_values={};For Each( {value}, na_list, na_values=Insert(na_values,value);na_values=Insert(na_values,1););
return(Filter Each({value}, filtered list, Map Value(value, na_values, Unmatched(0))==0;));
);Pero da un resultado incorrecto si vuelvo a llamar a la función con otros parámetros:
Show(wrap({"b",1, 2, 3},{"b"})); // <-- returns {1,2,3} => OK
Show(wrap({"d",1, 2, 3},{"d"})); // <-- returns {"d",1,2,3} => NOT OK, should be as above {1,2,3]
¿Que esta mal aquí? ¿Un error en JMP? Estoy usando la versión 16.0.0 (512257).
Saludos,
Tomás
secuencias de comandosventanasRe: Función de valor de mapa: resultados incorrectos para diferentes caracteresEl soporte de JMP me ha respondido, puede ser un defecto que he encontrado.
Su soporte me dio la siguiente solución a mi problema original para eliminar elementos innecesarios de una lista mediante la función de matriz asociativa:
filtered list = {"b", 1, 2, 3};
na_list = {"b"};
result = Associative Array(filtered list) << Remove(Associative Array(na_list)) << Get Keys; // {1, 2, 3}