Variablennamen, die sich bei jeder Wiederholung einer Schleife ändernIch versuche, eine neue Spaltenformel zu erstellen, die die Variablennamen jedes Mal ändert, wenn eine for-Schleife wiederholt wird. Nachfolgend finden Sie den JSL-Code:
For(i = 1, i <= 5, i++,
dtMachineStartandStopTimes << New Column(:Machine||char(i)||RunDuration, Formula(:Machine||char(i)||StopTime-:Machine||char(i)||StartTime));
);
Jede Reihe in dtMachineStartundStopTimes hat Spalten mit der Bezeichnung "Machine1StartTime" bis "Machine5StartTime" sowie "Machine1EndTime" bis "Machine5EndTime". Der obige Code funktioniert nicht, aber ich denke, es sollte einen einfachen Weg geben, damit es funktioniert.
Zu Ihrer Information, ich habe den Beitrag schon gesehen https://community.jmp.com/t5/Discussions/So-zum-Anlegen-Variabelnamen-depending-on-loop-number/td-p/7422 , aber ich kann nicht herausfinden, was das Plakat macht.
Re: Variablennamen, die sich bei jeder Wiederholung einer Schleife ändernDas hat sofort funktioniert! Ich danke dir sehr!
Re: Variablennamen, die sich bei jeder Wiederholung einer Schleife ändernDas erste Argument von New Column () muss eine Zeichenfolge sein. Versuchen Sie stattdessen diese "Maschine" || char (i) || "RunDuration".
Wenn ich Ihre Formel so interpretieren würde, wie JMP es tun würde, wäre es so etwas wie "Nehmen Sie den Wert für die aktuelle Zeile in der Spalte" Maschine "und hängen Sie den aktuellen Wert des Index an und hängen Sie den Wert der Variablen StopTime an ... usw. Sie können auf diese Weise keine Spaltenreferenz erstellen. In diesem Fall müssen Sie die Formel parsen, bevor Sie sie anwenden, um das "char (i)" - Zeug loszuwerden, da dies zerbrechen wird, sobald der Wert von "i" nicht mehr dem entspricht, was wann war Formel wurde erstellt oder ist undefiniert. So geht's:
For(i = 1, i <= 5, i++,
Eval(Parse(Eval Insert("\[dtMachineStartandStopTimes << New Column("Machine^i^RunDuration", Formula(:Machine^i^StopTime - :Machine^i^StartTime)) ]\")));
);