Ciao, sto scrivendo uno script per automatizzare le manipolazioni della mia tabella (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 (salvato in Init_IDs) e ho chiesto all'utente di rinominarli in una finestra pop-up che salva in New_IDs, quindi posso 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 test in cui la dimensione di New_IDs era 6 ma questo cambierà, quindi mi piacerebbe usare un For Loop per renderlo flessibile, questo è quello che 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 Items (New_IDs) generi il valore 6. Ho provato il ciclo For da solo senza la combinazione con l'altra formula Match e anche questo non funziona, quindi mentre il "+" in mezzo potrebbe alla fine 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, senza fortuna neanche lì:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);