Nomi di variabili che cambiano ogni volta che viene ripetuto un cicloSto provando a creare una nuova formula di colonna che cambia i nomi delle variabili ogni volta che un ciclo for viene iterato. Vedi sotto per il codice JSL:
For(i = 1, i <= 5, i++,
dtMachineStartandStopTimes << New Column(:Machine||char(i)||RunDuration, Formula(:Machine||char(i)||StopTime-:Machine||char(i)||StartTime));
);
Ogni riga in dtMachineStartandStopTimes ha colonne etichettate "Machine1StartTime" attraverso "Machine5StartTime" e "Machine1EndTime" tramite "Machine5EndTime". Il codice sopra non funziona, ma credo che dovrebbe esserci un modo semplice per farlo funzionare.
Cordiali saluti, ho già visto il post su https://community.jmp.com/t5/Discussions/How-to-create-variable-names-depending-on-loop-number/td-p/7422 ma non riesco a capire cosa stia facendo il poster.
Ri: nomi di variabili che cambiano ogni volta che viene ripetuto un cicloHa funzionato subito! Grazie mille!
Ri: nomi di variabili che cambiano ogni volta che viene ripetuto un cicloIl primo argomento di New Column () deve essere una stringa. Prova questa "Macchina" || char (i) || "RunDuration" invece.
Se dovessi interpretare la tua formula come avrebbe fatto JMP, sarebbe qualcosa come "prendere il valore per la riga corrente nella colonna" Macchina "e aggiungere il valore corrente dell'indice e aggiungere il valore della variabile StopTime ... eccetera. Non è possibile costruire un riferimento di colonna in questo modo. In questo caso, avrai bisogno di analizzare la formula prima di applicarla per sbarazzarti del materiale "char (i)" perché si romperà non appena il valore di "i" non sarà più quello che era quando la formula è stata creata o non è definita. Ecco come farlo:
For(i = 1, i <= 5, i++,
Eval(Parse(Eval Insert("\[dtMachineStartandStopTimes << New Column("Machine^i^RunDuration", Formula(:Machine^i^StopTime - :Machine^i^StartTime)) ]\")));
);