Hallo, ich schreibe ein Skript, um meine Tabellenmanipulationen (hauptsächlich das Hinzufügen neuer Spalten mit Übereinstimmungsformeln) für Daten mit einer variablen Anzahl eindeutiger Spalteninhalte und endgültiger Ausgaben zu automatisieren.
Ich habe ein Skript geschrieben, um die eindeutigen Inhalte in :SampleID (gespeichert in Init_IDs) zu identifizieren und den Benutzer aufgefordert, sie in einem Popup-Fenster umzubenennen, das in New_IDs speichert. Ich kann dann meine neue Spalte mit einer Standard-Match-Formel erstellen:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);Diese Formel funktioniert für meinen Testdatensatz, bei dem die Größe von New_IDs 6 war, aber dies wird sich ändern, daher möchte ich eine For-Schleife verwenden, um sie flexibel zu machen. Dies habe ich versucht, aber es funktioniert nicht:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);Ich habe überprüft, dass N Items (New_IDs) den Wert 6 generieren. Ich habe die For-Schleife alleine ohne die Kombination mit der anderen Match-Formel ausprobiert und das funktioniert auch nicht. Während das '+' dazwischen letztendlich ein Problem sein kann, scheint das Hauptproblem meine for-Schleife selbst zu sein.
Ich habe es auch vereinfacht mit einer If-Anweisung anstelle einer Match-Formel versucht, auch dort kein Glück:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);