みなさん、こんにちは。値が非常に小さい列に対して新しい数値列を作成するスクリプトがあります(つまり、読みやすさを向上させるために、単位メートルの列をmmまたはµmに変換します)。
それはうまく機能しているようでした。列は問題なく生成されました。 しかし、後で他のテーブルと結合するときにいくつかの問題が発生し、突然、列にデータが表示されなくなりました。 新しい列の数式を確認すると、ソース列の名前の代わりに、スクリプトのループからのcolnames [i]参照が含まれていることがわかります(スクリーンショットを参照)。
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>
やあ@ mvanderaa1 、
これはかなり一般的な問題です。以下のリンクにリストされているオプションの1つを試すことができますか?
Eval Insert、Eval Expr、Parse、およびSubstituteを使用して、ある式を別の式に挿入します。
私の頼りになるものは一番上です:
//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)
)
) )
);