Comment stocker la liste évaluée dans un script de table de donnéesBonjour,
Je souhaite stocker un script dans une table de données afin que les utilisateurs puissent ultérieurement ouvrir les tables et exécuter les scripts.
Mon problème est que je ne sais pas comment imprimer dans le script de table de données les valeurs des variables que j’utilise dans mon script original. J'ai essayé avec expr, eval, ...
L'exemple ci-dessous le montre clairement: j'essaie de sauvegarder un DataTableScript qui génère un graphique simple basé sur "mylist". mais comment sauvegarder la vraie chaîne contenue dans "mylist"?
Merci de votre aide.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mylist = {"sex" , "age"};
Graph = Variability Chart(
Y( :weight ),
X( eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
dt << New Script(
"Test",
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Comment stocker la liste évaluée dans un script de table de donnéesVoici un moyen de rassembler vos expressions
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
makeBiv = Expr(Bivariate( Y( :height ), X( :weight ) ));
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
newexpr = expr(tbd; tbd2);
substituteinto(newexpr, expr(tbd), nameexpr(makevc),
expr(tbd2), nameexpr(makeBiv)
);Comment stocker la liste évaluée dans un script de table de donnéesSalut,
J'ai une question supplémentaire à ce sujet:
pour plusieurs raisons, je dois modifier légèrement l'expression saveScript:
Je veux ajouter quelques lignes de code à cela comme:
dt << Clear Select;
dt << Clear Row States;
dt << Select Where( ...);
dt2 = dt << subset ....;
Ensuite, je sauvegarde le nouveau script dans dt2.
J'ai essayé d'ajouter ou de concaténer les 2 expressions mais cela n'a pas fonctionné 
De l'aide ?
Comment stocker la liste évaluée dans un script de table de donnéesLe substitutInto fait le travail !!!
Merci beaucoup
Comment stocker la liste évaluée dans un script de table de donnéesJe ne peux pas: la liste est le résultat d'un script
Comment stocker la liste évaluée dans un script de table de donnéesIncluez simplement la définition de la liste dans le script de table:
dt << New Script(
"Test",
mylist = {"sex" , "age"};
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Comment stocker la liste évaluée dans un script de table de donnéesJ'essaie (d'essayer) d'éviter la duplication de code (considéré comme une mauvaise chose pour la maintenabilité du code dans tout langage de programmation), et de m'en tenir à quelques modèles de conception que je connais bien. Donc, dans cet esprit, je le ferais comme indiqué ci-dessous. Mais je suis sûr qu'il y a beaucoup d'autres moyens.
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
// Make the chart
makeVC;
// Now save the script that makes the chart using a similar method to the above
saveScript = Expr(CurrentDataTable() << New Script("My Variability Chart", TBD));
SubstituteInto(saveScript, Expr(TBD), NameExpr(makeVC));
saveScript;