大家好,我有一个脚本可以为任何具有非常小的值的列创建新的数字列(即将具有单位米的列转换为毫米或微米以获得更好的可读性)。
它似乎运行良好;生成的列没有问题。 但是后来我在加入其他表时遇到了一些问题,突然这些列不再显示任何数据。 当我检查新列中的公式时,我看到它不是源列的名称,而是来自脚本中循环的 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 ,
这是一个非常常见的问题,您可以尝试以下链接中列出的选项之一吗?
使用 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)
)
) )
);