Définir un nom de variable dans une boucle forSalut,
J'aime définir des noms de variables tels que nom1, nom2,... dans une boucle for avec la disposition suivante :
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
et ainsi de suite.
J'ai fait un script ci-dessous et j'ai eu une erreur :
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
J'apprécie ton aide. Merci.
Re : Définir un nom de variable dans une boucle forMerci Jeff. J'ai essayé votre dernier script et changé les fichiers et la feuille listexcel en noms et cela fonctionne parfaitement. Merci encore pour tout votre soutien.
Re : Définir un nom de variable dans une boucle forAvec quoi luttez-vous exactement ? Recevez-vous une erreur que vous ne comprenez pas ? J'ai montré les boucles ci-dessus qui fonctionneront pour vous.
J'ai suggéré plus tôt que vous utilisiez une liste au lieu d'essayer de créer des noms de variables JSL indexés. Je ne vois rien dans le code que vous avez publié ici qui suggère qu'une liste ne fonctionnera pas pour vous. Je vous encourage fortement à utiliser des listes à la place.
flow = {"one", "two", "three", "four", "five"};
names = {};
files = {};
For( i = 1, i <= N Items( flow ), i++,
names[i] = "A_" || flow( i );
files[i] = Open( "$Documents/JMP/A_" || Flow[i] || ".jmp" );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", files, listexcelsheet );
);Re : Définir un nom de variable dans une boucle forMerci beaucoup Jeff. J'ai besoin d'un peu plus d'aide après avoir reçu la première partie. Voici le script qui fonctionne bien ci-dessous :
If( Nitems == 5,
name1 = ntable;
name2 = "A" || "_" || Flow[1];
name3 = "A" || "_" || Flow[2];
name4 = "A" || "_" || Flow[3];
name5 = "A" || "_" || Flow[4];
name6 = "A" || "_" || Flow[5];
name1jmp = "$Documents/JMP/" || "A" || "_" || Flow[1] || ".jmp";
name2jmp = "$Documents/JMP/" || "A" || "_" || Flow[2] || ".jmp";
name3jmp = "$Documents/JMP/" || "A" || "_" || Flow[3] || ".jmp";
name4jmp = "$Documents/JMP/" || "A" || "_" || Flow[4] || ".jmp";
name5jmp = "$Documents/JMP/" || "A" || "_" || Flow[5] || ".jmp";
file1 = Open( ntablejmp );
file2 = Open( name1jmp );
file3 = Open( name2jmp );
file4 = Open( name3jmp );
file5 = Open( name4jmp );
file6 = Open( name5jmp );
listx = Eval List( {name1, name2, name3, name4, name5, name6} );
listexcelsheet = Eval List( {name1, name2, name3, name4, name5, name6} );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", listx, listexcelsheet );
);
J'essaie de créer une boucle for pour qu'elle fonctionne pour tous les Nitems. J'utilise une machine MAC et c'est pourquoi cela a été fait de cette façon. Merci pour tout votre soutien continu.
Re : Définir un nom de variable dans une boucle forLa technique est exactement la même. Vous créez une chaîne que vous allez analyser en une expression et l'évaluer.
Une chose qui pourrait vous dérouter est le \!" ci-dessous. Parce que vous avez besoin que votre chaîne contienne un ", vous devez y échapper en utilisant \!.
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
expr_string = "name" || Char( i + 1 ) || "jmp = \!"$Documents/JMP/" || "A_" || Flow[i] || ".jmp\!"";
Show( expr_string );
Eval( Parse( expr_string ) );
);Re : Définir un nom de variable dans une boucle forMerci Jeff. Les deux fonctionnent bien mais j'aime le premier puisque mon code est basé sur cette définition. Au lieu de name1, j'aime aussi définir
nom1jmp = "$Documents/JMP/" || "UN" || "_" || Flux[i] || ".jmp" ;
Pouvez-vous m'aider à ajouter cela au script précédent ? Merci
Re : Définir un nom de variable dans une boucle for@txnelson interprète votre question différemment de moi.
Je pense que vous souhaitez créer une série de variables JSL avec un numéro d'index faisant partie du nom de la variable.
Vous pouvez le faire, mais vous devrez construire l'expression entière sous forme de chaîne avant d'essayer de l'analyser().
Comme ça:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
Cependant, je ne sais pas pourquoi vous voudriez faire cela au lieu d'utiliser une liste ou un tableau associatif doté de l'indexation intégrée.
names = {};
names[1] = "A_one";
For( i = 1, i <= N Items( flow ), i++,
names[i + 1] = "A_" || flow[i]
);
Show( names[1], names[2], names[3], names[4] );
Re : Définir un nom de variable dans une boucle forVous n'utilisez pas la syntaxe correcte pour renommer une colonne.Voici un exemple tiré directement de
Aide==>Index des scripts==>Scripts de colonnes
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );