列名と数式を含む for ループを使用して新しい列を作成する既存のテーブルから分割テーブルを作成し、分割された列に基づいた式を使用して分割テーブルに新しい列を追加しようとしています。 ただし、コードは新しい列を作成しますが、「数式評価エラー」が表示されます。
dt2 = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :S ),
Split(
:Name( "Median(data)" )
),
Group( :L, :m, :C, :P, :z, :x ),
Remaining Columns( Drop All ),
Sort by Column Property
);
colname = {"B","C"};
colby = {"A","B"};
// Add new columns to the split data table
For( i = 1, i <= N Items( colname ), i++,
dt2 << New Column( colname[i]||"/"||colby[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( column(colname[i]) / column(colby[i]) )
););自動化とスクリプト作成Re: 列名と数式を含む for ループを使用して新しい列を作成するJMP 式定義は、定義時には評価されず、実行時にのみ評価されます。したがって、式は完全に定義された形式で JMP に提示される必要があります。
Column( colname[i] ) / Column( colby[i] )
JMP に次のように提示する必要があります
Column( "B" ) / Column( "A" )
Substitute 関数を使用すると、必要に応じてコードを拡張できます。
// Add new columns to the split data table
For( i = 1, i <= N Items( colname ), i++,
Eval(
Substitute(
Expr(
dt2 << New Column( colname[i] || "/" || colby[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Column( __colname__ ) / Column( __colby__ ) )
)
),
Expr( __colname__ ), colname[i],
Expr( __colby__ ), colby[i]
)
)
);Re: 列名と数式を含む for ループを使用して新しい列を作成する以下のように、まだ同じエラーが発生します
Column B/A Formula Interrupted
Cannot convert argument to a number [or matrix] 1 times At rows: 2 Operation: Divide, Column( "B" ) / /*###*/Column( "A" ) /*###*/
Formula evaluation errors have been ignored
Column C/B Formula Interrupted
Cannot convert argument to a number [or matrix] 1 times At rows: 2 Operation: Divide, Column( "C" ) / /*###*/Column( "B" ) /*###*/
Formula evaluation errors have been ignored
Re: 列名と数式を含む for ループを使用して新しい列を作成するColumn() 関数を As Column() 関数に変更してみてください。
Re: 列名と数式を含む for ループを使用して新しい列を作成するうまくいきました、ありがとう!