Noms de variables qui changent chaque fois qu'une boucle est itéréeJ'essaie de créer une nouvelle formule de colonne qui modifie le nom des variables chaque fois qu'une boucle for est itérée. Voir ci-dessous pour le code JSL:
For(i = 1, i <= 5, i++,
dtMachineStartandStopTimes << New Column(:Machine||char(i)||RunDuration, Formula(:Machine||char(i)||StopTime-:Machine||char(i)||StartTime));
);
Chaque rangée dans dtMachineStartandStopTimes comporte des colonnes intitulées "Machine1StartTime" à "Machine5StartTime" ainsi que "Machine1EndTime" à "Machine5EndTime". Le code ci-dessus ne fonctionne pas, mais j'estime qu'il devrait exister un moyen simple de le faire fonctionner.
Pour info, j'ai déjà vu le post sur https://community.jmp.com/t5/Discussions/How-to-create-variable-names-depending-on-loop-number/td-p/7422 , mais je ne peux pas comprendre ce que l’affiche fait.
Re: Noms de variables qui changent chaque fois qu'une boucle est itéréeCela a fonctionné tout de suite! Merci beaucoup!
Re: Noms de variables qui changent chaque fois qu'une boucle est itéréeLe premier argument de New Column () doit être une chaîne. Essayez plutôt cette "Machine" || char (i) || "RunDuration".
Si je devais interpréter votre formule de la même manière que JMP, ce serait quelque chose du genre "prenez la valeur de la ligne actuelle dans la colonne" Machine "et ajoutez la valeur actuelle de l'index, puis la valeur de la variable StopTime ... etc. Vous ne pouvez pas construire une référence de colonne de cette façon. Dans ce cas, vous aurez besoin d’analyser la formule avant de l’appliquer pour vous débarrasser de la fonction "char (i)", car elle va casser dès que la valeur de "i" n’est plus celle qui était quand le la formule a été créée ou est indéfinie. Voici comment faire cela:
For(i = 1, i <= 5, i++,
Eval(Parse(Eval Insert("\[dtMachineStartandStopTimes << New Column("Machine^i^RunDuration", Formula(:Machine^i^StopTime - :Machine^i^StartTime)) ]\")));
);