Ciao, sto scrivendo uno script per automatizzare le manipolazioni delle mie tabelle (principalmente aggiungendo nuove colonne con formule di corrispondenza) per dati con un numero variabile di contenuti di colonne univoci e output finali.
Ho scritto uno script per identificare i contenuti univoci in :SampleID (salvati in Init_IDs) e ho chiesto all'utente di rinominarli in una finestra pop-up che salva in New_IDs. Posso quindi creare la mia nuova colonna con una formula di corrispondenza standard:
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],
)
)
);
Questa formula funziona per il mio set di dati di prova in cui la dimensione di New_ID era 6, ma questo cambierà, quindi vorrei usare un ciclo For per renderlo flessibile. Ecco cosa ho provato, ma non funziona:
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],
)
)
),
);
Ho verificato che N elementi (New_ID) generano il valore 6. Ho provato il ciclo For da solo senza la combinazione con l'altra formula Match e anche questo non funziona, quindi, anche se il '+' in mezzo potrebbe in definitiva essere un problema, il problema principale sembra essere il mio ciclo for stesso.
Ho anche provato a semplificarlo con un'istruzione If invece di una formula Match, ma anche in questo caso non ho avuto successo:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);