このスクリプトは、あなたが求めているものに近いものを構築するかもしれません。New Column 関数の Formula パラメーターには、完全に構築された数式が必要です。これは、スクリプトの実行後に実際に実行するときに必要な形式になっています。以下の eval( evalexpr( ... expr(...) ... expr(...) ... ) ) 戦略は、必要なことを行う 1 つの方法です。expr() は、評価が必要な部分にタグを付けるために使用されます。evalexpr() はそれらを探し出して評価します。eval() は、evalexpr によって返された式を評価します。2 つの expr() の間のマイナスは for ループ内では評価されませんが、names[i+1] は (evalexpr によって) 評価され、NewColumn は (eval によって) 評価されることに注意してください。
<
dt = New Table( "無題",
行を追加( 1 ),
New Column( "a", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1] ) ),
New Column( "b", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "c", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4] ) ),
New Column( "d", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [8] ) ),
New Column( "e", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [16] ) ),
New Column( "f", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [32] ) )
);
cc = N 列 (dt);
names=dt<
For( i = 1, i <= cc, i = i + 2,
Eval( // によって返された式を評価します...
Eval Expr( // 埋め込まれた expr を評価します...
New Column( "Delta " || char(names[ i + 1 ]), // 列を文字列に変換します
数値、連続、
// Formula は単独では評価されません。この場合、2 つの expr が必要です
Formula( Expr( 名前[ i + 1 ] ) - Expr( 名前[ i ] ) )
)
)
)
);
/* ----- 結果のスクリプト -----------------
New Table( "無題",
行を追加( 1 ),
New Column( "a", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1] ) ),
New Column( "b", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "c", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4] ) ),
New Column( "d", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [8] ) ),
New Column( "e", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [16] ) ),
New Column( "f", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [32] ) ),
New Column( "デルタ b", Numeric, "Continuous", Format( "Best", 10 ), Formula(
- :a ) ),
New Column( "Delta d", Numeric, "Continuous", Format( "Best", 10 ), Formula( :d - :c ) ),
New Column( "Delta f", Numeric, "Continuous", Format( "Best", 10 ), Formula( :f - :e ) )
)
*/
