Très simplement, j'essaie de modulariser certaines cartes de variabilité. Au total, il y a 3-4 paramètres différents pour lesquels je veux tracer ces graphiques, donc je dois transmettre une clé à la fonction pour lui dire quelle colonne tracer et la laisser configurer une gestion spécifique de cette colonne. À savoir, quel type de transformation cette colonne doit subir dans le cadre de l'opération de tracé.
La façon dont j'ai commencé est de transmettre une chaîne, puis d'utiliser un ensemble de conditions pour spécifier le nom de la colonne à transformer (colname), puis le striong à appliquer à la transformation (yname).
J'ai essayé plusieurs méthodes pour ce faire et quelle que soit la solution que j'utilise, je n'arrive pas à faire fonctionner correctement l'intrigue. Le codage en dur du Y du graphique de variabilité fonctionne toujours correctement pour les filtres donnés, donc je sais qu'il y a des données présentes, je n'arrive tout simplement pas à les sélectionner en utilisant mon approche variable. C'est ce que j'ai essayé pour la ligne Y du graphique var jusqu'à présent:
- Y( Transform Column( yname, Formula( Column(colname) ) ) ),
- Alerte JMP : Argument non valide (boîte de dialogue)
- Le groupe n'a pas de données car toutes les lignes ont des valeurs manquantes ou sont exclues (fenêtre du journal)
- Y( Transform Column( yname, Formula( Column(dt,colname) ) ) ),
- Alerte JMP : Argument non valide (boîte de dialogue)
- Le groupe n'a pas de données car toutes les lignes ont des valeurs manquantes ou sont exclues (fenêtre du journal)
- Y( Transform Column( yname, Formula( Column( As Column(colname)) ) ) ),
- Alerte JMP : Colonne non résolue 256 fois (boîte de dialogue)
- "Argument invalide 256 fois, une colonne ou un groupe n'a pas de données car toutes les lignes ont des valeurs manquantes ou sont exclues (log)
- Y( Transform Column( yname, Formula( Column( As Column(dt,colname)) ) ) ),
- Alerte JMP : l'accès à la table de données délimitée nécessite une colonne ou une variable de table de données 256 fois (boîte de dialogue)
- Argument invalide 256 fois, une colonne ou un groupe n'a pas de données car toutes les lignes ont des valeurs manquantes ou sont exclues (log)
- Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
- Alerte JMP : Colonne non résolue 267 fois (boîte de dialogue)
- (pas d'erreurs de journal)
- Y( Transform Column( yname, Formula( As Column(dt,colname) ) ) ),
- Alerte JMP : l'accès à la table de données délimitée nécessite une colonne de table de données ou une variable 267 fois (boîte de dialogue)
- (pas d'erreurs de journal)
Si ce n'est pas évident par mes tentatives, je ne sais toujours pas quelle est la différence entre As Column() et Column(). J'ai vu des solutions sur des forums avec l'un ou l'autre et les deux, alors je les ai toutes essayées et je n'ai abouti à rien. Le seul indice que je vois est que lorsque As Column() est utilisé indépendamment, j'obtiens un nombre différent de violations d'accès (267) par rapport au cas où il est enveloppé par Column() (256). Je sais que 267 est le nombre "correct" de lignes à renvoyer par ce filtre car le codage en dur du nom de la colonne dans la formule de transformation trace correctement 267 lignes.
De plus, j'ai essayé de définir la variable colname directement sur la colonne (colname = :R et colname = ":R") et diverses combinaisons de les utiliser directement et/ou de les envelopper dans des combinaisons de Column() et As Column() fonctionne aussi sans succès.
Quelqu'un peut-il voir ce que je fais mal ici?
Remarque : Ce code exact n'a pas été testé, les noms de variables ont été génériques.
//
// Build plot functions
//
var_chart = Function( {dutname, ytype, stressname, bias, ver},
{chart, ax_min, ax_max, ax_step, len, colname, yname},
<BR /> ax_min = 0;<BR /> ax_max = 1;<BR /> ax_step = 0.1;<BR />
If(ytype == "r", (colname = "R"; yname = "R [Ω]"));<BR /> If(ytype == "l", (colname = "L"; yname = "L [H]"));<BR /> If(ytype == "c", (colname = "C"; yname = "C [F]"));
If(stressname == "s1", len = 1.1);
If(stressname == "s2", len = 2.2);
If(stressname == "s3", len = 3.3);
chart = Variability(
Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
X( :X1, :X2, :X3, :X4 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
<<SET scale=""></SET>