Ciao a tutti, ho uno script che crea nuove colonne numeriche per tutte le colonne che hanno valori molto piccoli (cioè trasforma una colonna che ha unità di misura in mm o µm per una migliore leggibilità).
Sembrava funzionare bene; le colonne sono state generate senza problemi. Ma poi ho riscontrato alcuni problemi in seguito quando mi sono unito ad altre tabelle, improvvisamente le colonne non hanno più mostrato dati. Quando controllo la formula nelle nuove colonne, vedo che invece del nome della colonna di origine, ha un riferimento colnames[i] dal ciclo nello script (vedi screenshot).
Names Default To Here( 1 );
dt = Current Data Table();
colnames = dt << get column names( numeric, string );
For( i = 1, i <= N Items( colnames ), i++,
If( (Col Max( column(dt,colnames[i]))-Col Min( column(dt,colnames[i])))<1e-4 & (Col Max( column(dt,colnames[i]))-Col Min( column(dt,colnames[i])))>0,
If( !Contains( colnames, colnames[i] || "_µm"),
dt << New Column( colnames[i] || "_µm", Formula( As Column( colnames[i] ) * 1e6 ) ) )
,
If( (Col Max( column(dt,colnames[i]))-Col Min( column(dt,colnames[i])))<1e-1 & (Col Max( column(dt,colnames[i]))-Col Min( column(dt,colnames[i])))>1e-4,
If( !Contains( colnames, colnames[i] || "mm"),
dt<<NEW column=""></NEW>
Ciao @mvanderaa1 ,
Questo è un problema abbastanza comune, puoi provare una delle opzioni elencate al link sottostante?
Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute
Il mio go-to è quello in alto:
//Eval Expr
For( i = 1, i <= N Items(cols), i++,
Eval( Eval Expr(
dt << New Column(
"2 * " || Char( cols[i] ),
Numeric,
"Continuous",
Formula( As Column( Expr( Char( cols[i] ) ) ) * 2)
)
) )
);