我正在尝试列出列引用,以供以后在创建堆叠数据表时使用。
当我在函数中创建列表时,它可以很好地工作。 但是,当我在类方法中尝试相同操作时,它不起作用并产生错误消息:“操作分配没有值”(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]