Commentaires sur le script JSL (renommer les colonnes) : cela fonctionne mais je ne sais pas pourquoi !Salut la communauté JMP,
Après 2 jours d'apprentissage, j'ai enfin produit un script JSL qui effectue l'opération de changement de nom de colonne que je cherchais. Cependant, compte tenu du processus plutôt laborieux pour arriver à ce résultat, je soupçonne que j'ai peut-être utilisé des approches sous-optimales. Par conséquent, je cherche des moyens de nettoyer ce script.
Names Default To Here( 1 );
dt = Current Data Table();
src=.;
trg = .;
sfx = "";
pfx = "";
n = 0;
m = 0;
win = New Window (
" WARNING ",
<< Modal,
Text Box (" It is recommended that you save your table before proceeding "),
Button Box (
"SAVE NOW",
dt << Save("");
),
);
cd = Column Dialog(
cl1 = ColList( "SOURCES", Min Col (1)),
cl2 = ColList( "TARGETS", Min Col (1)),
Line Up( 2,
Text Box( "Prefix" ), ex = EditText( "P_" ),
Text Box( "Suffix" ), ey = EditText( "_S" )
),
);
src=cd[1];
srcx = right (src,length (src)); // I'm not sure how this works but without this the script fails
n = N items (srcx);
trg = cd[2];
trgx = right (trg,length (trg)); // I'm not sure how this works but without this the script fails
m = N items (trgx);
pfx = cd [4];
sfx = cd [6];
If (n == m,
st = "";
For (i=1, i <= m, i++,
scol = srcx [i] << Get Name;
st = pfx || scol || sfx;
trgx [i] << Set Name (st);
);
,Stop());Vos commentaires seraient grandement appréciés.
Acclamations,
TS
Re : commentaires sur le script JSL (renommer les colonnes) : cela fonctionne mais je ne sais pas pourquoi !Salut MS,
Merci pour vos commentaires, c'est très apprécié
Meilleur,
TSRe : commentaires sur le script JSL (renommer les colonnes) : cela fonctionne mais je ne sais pas pourquoi !Super que vous vouliez apprendre JSL. C'est vraiment utile ! Et ce n'est pas si difficile de démarrer si vous avez l'habitude de travailler dans JMP de manière interactive. Une grande partie de la syntaxe JSL semble alors logique et simple. Cependant, il y a bien sûr des choses bizarres telles que la liste renvoyée par Dialogue de colonne().
J'utiliserais probablement une nouvelle fenêtre () non modale comme panneau de contrôle à la place pour cette tâche.
Vous trouverez ci-dessous une tentative de simplification de votre script, toujours en utilisant Boîte de dialogue Colonne . j'utilise Liste d'évaluation() pour exécuter certaines des expressions d'affectation de la sortie de Dialogue de colonne, ce qui élimine le besoin de variables supplémentaires.
Names Default To Here(1);
dt = Current Data Table();
cd = Column Dialog(
src=ColList("SOURCES", Min Col(1)),
trg = ColList("TARGETS", Min Col(1)),
Line Up(2,
Text Box("Prefix"), pfx = EditText("P_"),
Text Box("Suffix"), sfx = EditText("_S")
)
);
Eval List(cd[[1 2 4 6]]); //Execute relevant assignments within list cd
Show(src, trg, pfx, sfx); // Just to confirm (can be deleted)
n = N Items(src);
m = N Items(trg);
For(i = 1, i <= Min(n, m), i++,
trg[i] << Set Name(pfx || (src[i] << get name) || sfx)
);