後で積み上げデータテーブルを作成する際に使用する列参照のリストを作成しようとしています。
関数内でリストを作成すると、まったく問題なく動作します。ただし、クラス メソッド内で同じことを試しても機能せず、「Op Assign する値がありません」(1, 2) というエラー メッセージが表示されます。
make_col_list = Function({dt,start,end},
Local({lst,col_list},
Try(
Current Data Table(dt);
col_list = {};
lst = dt << Get Column Names;
For(i=start,i<=end,i++,
Insert Into(col_list,lst[i])
);
,
Throw("Error in col_list: "||char(exception_msg))
);
col_list;
);
);上記は 1 つのスクリプトで使用する関数です。この機能は現在問題なく動作しています。
ただし、クラス内で同様のアイデアを試してみると、うまくいきません。以下はクラス内で定義する方法です。
col_list = dt << Get Column Names;
show(col_list);
show(col_list[26]);
Try(
For(pv_i=27,pv_i<=696,i++,
show(col_list[pv_i]);
Insert Into(pv_lst,col_list[pv_i]);
);
,
Throw("Error in pv columns: "||Char(exception_msg));
);
Try(
For(zv_i=16,zv_i<=25,zv_i++,
Insert Into(zv_lst,col_list[zv_i]);
);
,
Throw("Error in zv columns: "||Char(exception_msg));
);
Try(
For(wr_i=26,wr_i<=361,wr_i++,
Insert Into(wr_lst,col_list[wr_i]);
);
,
Throw("Error in work columns: "||Char(exception_msg));
);
Try(
For(dr_i=362,dr_i<=696,dr_i++,
Insert Into(dr_lst,col_list[dr_i]);
);
,
Throw("Error in drive columns: "||Char(exception_msg));
);選択して操作しようとしている列のグループが複数あります。
私はもともと次のような方法を使用しようとしました:
pv_lst = Column(26::696);
しかし、これも機能させることができませんでした。
列参照のリストまたはコレクションを適切に生成する方法について役立つと幸いです。
やあ@awsmagala 、
比較的単純なことを非常に複雑な方法で実行しようとしているように見えます。明示的な列名の代わりに列番号のリストを使用してテーブル スタックを実行できます。たとえば、次のように通常の方法で Car Physical Data (サンプル データ テーブル) のすべての数値列をスタックできます。
Data Table( "Car Physical Data" ) << Stack(
columns( :Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
)
または、 columns 引数で次のようにすることもできます。
stack_cols = 4::8;
Data Table( "Car Physical Data" ) << Stack(
columns( stack_cols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
積み重ねたい列がすべて一緒にない場合は、列番号のチャンクを連結するだけです。それが役立つことを願っています。
また、範囲内の実際の列名を取得したい場合は、make_col_list 関数を次のように短縮できます。
col_names = (dt << Get Column Names)[start::end]