Impossible "d'évaluer" une expressionSalut tout le monde,
J'ai encore du mal avec un script...
Celui-ci construit une expression. Ça a l'air bien.
Je peux même le copier et le coller du fichier journal dans la fenêtre de script, et si je le fais, il s'exécute correctement avec la sortie attendue.
Mais j'ai essayé Eval(), Eval Expr(), Eval(Eval Expr()), Eval(Parse())... eh bien ce dernier avec encore moins d'espoir que les autres, mais l'essentiel est... Je ne peux tout simplement pas le faire fonctionner !
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));Je joins un fichier "Test.jmp" sur lequel vous pouvez essayer.
La sortie de la commande "show" est :
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))));Et comme dit: si je le copie-colle dans la fenêtre de script pour exécuter cette sortie, j'obtiens ce que je veux!
Alors, comment puis-je "évaluer" cette expression ?
Merci!
Re : Impossible d'"évaluer" une expressionSalut Jim,
Votre solution fonctionne en effet ! Merci beaucoup.
Je contacte l'assistance.Re : Impossible d'"évaluer" une expressionEn utilisant mon "Morning Brain", j'ai trouvé:
eval(parse(char(evalexpr(tabexpr))))
qui permettra à l'expression qui a été construite de s'exécuter.
Je suis d'accord avec Ian, le code devrait fonctionner tel que développé, et je vous suggère de poster le problème sur :
support@jmp.com
Re : Impossible d'"évaluer" une expressionC'est en effet étrange, et je n'ai pas ajouté grand-chose d'autre que de mettre le code au même endroit. Je soupçonne que cela est lié à l'utilisation de colonnes virtuelles, mais nécessite une enquête plus approfondie.
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 : Impossible d'"évaluer" une expressionIl est certainement étrange que le code ne semble pas être entièrement exécutable en code ouvert. La seule façon dont j'ai pu le faire était de convertir votre expression tabExpr en une chaîne littérale et de l'exécuter avec 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 )
)
)
);"))
Peut-être que l'un des autres membres de la communauté a une idée
Re : Impossible d'"évaluer" une expressionArgh !
Je comprends le problème que vous rencontrez, j'ai téléchargé Test.jmp avant d'enregistrer une modification.
Voici la bonne version.
Sortie attendue (en copiant dans le log le résultat du show())

Les raisons pour lesquelles je vais avec un script comme celui-ci sont:
-La liste des paramètres dans l'application réelle est beaucoup plus longue
-Les paramètres changeront en fonction de mes données d'entrée, mais ils sont toujours documentés.
Re : Impossible d'"évaluer" une expressionQuelle est votre sortie attendue ? Je vois beaucoup de choses générées et placées dans des listes, mais je ne vois rien faire avec ces choses.
Re : Impossible d'"évaluer" une expressionSalut Justine,
Ça ne marche pas ici. Je suis sur JMP 12.1 si cela aide.
Ce qu'il fait, c'est créer un tableau, mais il ne remplit pas le contenu. J'obtiens les colonnes A et B.
J'ai une seule ligne et le nombre de A et B.Re : Impossible d'"évaluer" une expressionLe simple fait d'exécuter "tabExpr" évaluera l'expression.
tabulateObject = tabExpr;