Ich versuche, eine Liste von Spaltenverweisen zu erstellen, die später beim Erstellen einer gestapelten Datentabelle verwendet werden sollen.
Wenn ich die Liste innerhalb einer Funktion erstelle, funktioniert sie einwandfrei.Wenn ich das Gleiche jedoch innerhalb einer Klassenmethode versuche, funktioniert es nicht und es kommt die Fehlermeldung: „No value to 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;
);
);Oben ist die Funktion, die ich in einem Skript verwende.Diese Funktion funktioniert derzeit ohne Probleme.
Wenn ich eine ähnliche Idee innerhalb einer Klasse ausprobiere, funktioniert sie jedoch nicht.Unten ist, wie ich es innerhalb der Klasse definiert habe.
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));
);Ich habe mehrere Spaltengruppen, die ich auswählen und bearbeiten möchte.
Ich habe ursprünglich versucht, eine Methode wie diese zu verwenden:
pv_lst = Column(26::696);
konnte es aber auch nicht zum Laufen bringen.
Jede Hilfe beim ordnungsgemäßen Generieren einer Liste oder Sammlung von Spaltenverweisen wäre großartig.
Hallo @awsmagala ,
Es hört sich so an, als würden Sie versuchen, etwas relativ Einfaches auf sehr komplizierte Weise zu tun.Sie können einen Tabellenstapel mit einer Liste von Spaltennummern anstelle der expliziten Spaltennamen erstellen.Ich kann zum Beispiel alle numerischen Spalten in Car Physical Data (Beispieldatentabelle) auf die übliche Weise stapeln:
Data Table( "Car Physical Data" ) << Stack(
columns( :Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
)
Oder im Spaltenargument kann ich Folgendes tun:
stack_cols = 4::8;
Data Table( "Car Physical Data" ) << Stack(
columns( stack_cols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
Wenn die Spalten, die Sie stapeln möchten, nicht alle zusammen sind, können Sie die Spaltennummernblöcke einfach miteinander verketten.Hoffentlich hilft das.
Wenn Sie außerdem die tatsächlichen Spaltennamen in einem Bereich erhalten möchten, können Sie die Funktion „make_col_list“ auf etwa Folgendes kürzen:
col_names = (dt << Get Column Names)[start::end]