你好,
我需要透過腳本使用列名稱和常數的變數來建立一個新的公式列。
嘗試了 Expr、Eval、Parse、Eval Insert 的各種組合均無濟於事。
參見樣本。
謝謝
row = 11;
col = "foo";
for (i = 1, i <= ncols(dt), i++,
dt << New Column( "ratio " || char(i), numeric,
formula(( column(col) - column(col)[row] ) / (Col Max(col) - Col Min(col))));
);
使用
for (i = 1, i <= ncols(dt), i++,
當您在 For() 迴圈中新增列時,迴圈將永遠不會結束。每次循環 ncols(dt) 都會增加 1,因此 i 永遠不會達到 ncols(dt);
New Column() 函數的 Formula() 元素在為列建立時不會解析其內容。它僅在對每行運行公式時解析其內容。因此,當更改這些值時,列和行引用可能會導致問題。處理此問題的正確方法是在建立公式之前將列和行的實際值代入公式中。
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
row = 11;
col = "height";
stop = n cols(dt);
For( i=1, i<= stop, i++,
Eval(
Substitute(
Expr(
dt << New Column( "ratio " || Char( i ),
numeric,
formula( (As Column( _col_ ) - As Column( _col_ )[_row_]) / (Col Max( As Column( _col_ ) ) - Col Min( As Column( _col_ ) )) )
)
),
Expr( _col_ ), col,
Expr( _row_ ), row
)
);
);