Nombres de variables que cambian cada vez que se itera un bucleEstoy intentando crear una nueva fórmula de columna que cambia los nombres de las variables cada vez que se itera un bucle for. Vea a continuación el código JSL:
For(i = 1, i <= 5, i++,
dtMachineStartandStopTimes << New Column(:Machine||char(i)||RunDuration, Formula(:Machine||char(i)||StopTime-:Machine||char(i)||StartTime));
);
Cada fila en dtMachineStartandStopTimes tiene columnas con la etiqueta "Machine1StartTime" a través de "Machine5StartTime", así como "Machine1EndTime" a través de "Machine5EndTime". El código anterior no funciona, pero creo que debería haber una forma sencilla de hacerlo funcionar.
Para tu información, ya he visto el post en https://community.jmp.com/t5/Discussions/How-to-create-variable-names-depending-on-loop-number/td-p/7422 , pero no puedo entender lo que está haciendo el cartel.
Re: nombres de variables que cambian cada vez que se itera un bucle¡Eso funcionó de inmediato! Muchas gracias!
Re: nombres de variables que cambian cada vez que se itera un bucleEl primer argumento de Nueva Columna () debe ser una cadena. Pruebe esta "Máquina" || char (i) || "RunDuration" en su lugar.
Si tuviera que interpretar su fórmula como lo haría JMP, sería algo así como "tome el valor de la fila actual en la columna" Máquina "y agregue el valor actual del índice y agregue el valor de la variable StopTime ... etc. No se puede construir una referencia de columna de esa manera. En este caso, necesitará analizar la fórmula antes de aplicarla para deshacerse de las cosas "char (i)", ya que se romperá tan pronto como el valor de "i" ya no sea lo que era cuando la fórmula fue creada, o no está definida. Aquí está cómo hacer eso:
For(i = 1, i <= 5, i++,
Eval(Parse(Eval Insert("\[dtMachineStartandStopTimes << New Column("Machine^i^RunDuration", Formula(:Machine^i^StopTime - :Machine^i^StartTime)) ]\")));
);