我正在嘗試製作一個列引用列表,以便稍後在製作堆疊數據表時使用。
當我在函數內創建列表時,它工作得很好。但是,當我在類方法中嘗試相同的操作時,它不起作用並產生錯誤消息:“Op 分配沒有值”(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;
);
);上面是我在一個腳本中使用的函數。該功能目前運行沒有問題。
然而,當我在課堂上嘗試類似的想法時,它不會起作用。下面是我在類中定義它的方式。
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 ,
聽起來你正試圖以一種非常複雜的方式做一些相對簡單的事情。您可以使用列號列表而不是顯式列名稱來創建表堆棧。例如,我可以按照通常的方式堆疊汽車物理數據(示例數據表)中的所有數字列,如下所示:
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]