No se puede "evaluar" una expresiónHola a todos,
Una vez más estoy luchando con un guión...
Éste construye una expresión. se ve bien
Incluso puedo copiarlo y pegarlo desde el archivo de registro a la ventana del script y, si lo hago, se ejecuta correctamente con el resultado esperado.
Pero probé Eval(), Eval Expr(), Eval(Eval Expr()), Eval(Parse())... bueno, ese último con incluso menos esperanza que los demás, pero la conclusión es... ¡Simplemente no puedo hacer que funcione!
Names Default To Here( 1 );
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
dtParams = Eval(Eval Expr(tabExpr));Adjunto un archivo "Test.jmp" en el que puedes probar.
La salida del comando "mostrar" es:
tabExpr = Tabulate(Set Format(Uniform Format(10, 2)), Add Table(Column Table(Grouping Columns(:Source)), Row Table(Analysis Column(Transform Column("Parameter 1 Median", Formula(:P1_Q50)), Transform Column("Parameter 2 Median", Formula(:P2_Q50))), Statistics(Median))));Y como se dijo: si lo copio y lo pego en la ventana del script para ejecutar ese resultado, ¡obtengo lo que quiero!
Entonces, ¿cómo "evalúo" esa expresión?
¡Gracias!
Re: No puedo "evaluar" una expresiónHola Jim,
¡Tu solución funciona de hecho! Muchas gracias.
Estoy en contacto con soporte.Re: No puedo "evaluar" una expresiónUsando mi "cerebro matutino" se me ocurrió:
eval(parse(char(evalexpr(tabexpr))))
lo que permitirá que se ejecute la expresión que se ha construido.
Estoy de acuerdo con Ian, el código debería funcionar tal como se desarrolló, y le sugiero que publique el problema en:
support@jmp.com
Re: No puedo "evaluar" una expresiónEsto es realmente extraño, y no he agregado mucho más que poner el código en un solo lugar. Sospecho que está relacionado con el uso de columnas virtuales, pero necesita más investigación.
Names Default To Here( 1 );
ClearLog();
dt = New Table( "Test",
Add Rows( 5 ),
New Column( "P1_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [32.6, 54.8, 48.9, 28, 51.4] )
),
New Column( "P2_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 7, 8, 6, 12] )
),
New Column( "Source",
Character( 1 ),
"Nominal",
Set Values( {"A", "B", "B", "A", "B"} )
)
);
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
NewWindow("tabExpr", tabExpr);
NewWindow("Eval(Parse(Char(NameExpr(tabExpr))))", Eval(Parse(Char(NameExpr(tabExpr)))));Re: No puedo "evaluar" una expresiónCiertamente es extraño que el código no parezca completamente ejecutable en código abierto. La única forma en que pude hacerlo fue convertir su expresión tabExpr en una cadena literal y ejecutarla con Eval (Parse ()).
eval(parse("Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Grouping Columns( :Source ) ),
Row Table(
Analysis Column(
Transform Column(\!"Parameter 1 Median\!", Ordinal, Formula( :P1_Q50 ) ),
Transform Column(\!"Parameter 2 Median\!", Ordinal, Formula( :P2_Q50 ) )
),
Statistics( Median )
)
)
);"))
Tal vez uno de los otros miembros de la comunidad tenga una idea.
Re: No puedo "evaluar" una expresión¡Argh!
Entiendo el problema que tienes, subí Test.jmp antes de guardar un cambio.
Aquí está la versión correcta.
Salida esperada (copiando en el registro el resultado de show())

Las razones por las que voy con un script como este son:
-La lista de parámetros en la aplicación real es mucho más larga
-Los parámetros cambiarán dependiendo de mis datos de entrada, pero siempre están documentados.
Re: No puedo "evaluar" una expresión¿Cuál es su salida esperada? Veo que se generan muchas cosas y se colocan en listas, pero no veo que se haga nada con esas cosas.
Re: No puedo "evaluar" una expresiónHola Justin,
No funciona aquí. Estoy en JMP 12.1 si eso ayuda.
Lo que hace es crear una tabulación, pero no rellena el contenido. Obtengo las columnas A y B.
Tengo una sola fila y la cuenta de A y B.Re: No puedo "evaluar" una expresiónSimplemente ejecutando "tabExpr" evaluará la expresión.
tabulateObject = tabExpr;