我正在尝试制作一个列引用列表,以便稍后在制作堆叠数据表时使用。
当我在函数内创建列表时,它工作得很好。但是,当我在类方法中尝试相同的操作时,它不起作用并产生错误消息:“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]