Sto cercando di creare un elenco di riferimenti a colonne da utilizzare successivamente per creare una tabella di dati in pila.
Quando creo l'elenco all'interno di una funzione, funziona perfettamente.Tuttavia, quando provo lo stesso all'interno di un metodo di classe, non funziona restituendo il messaggio di errore: "Nessun valore per 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;
);
);Sopra è la funzione che uso in uno script.Questa funzione attualmente funziona senza problemi.
Quando provo un'idea simile all'interno di una classe, tuttavia, non funzionerà.Di seguito è riportato come l'ho definito all'interno della classe.
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));
);Ho più gruppi di colonne che sto cercando di selezionare e manipolare.
Inizialmente ho provato a utilizzare un metodo come questo:
pv_lst = Column(26::696);
ma non è stato in grado di far funzionare neanche questo.
Qualsiasi aiuto su come generare correttamente un elenco o una raccolta di riferimenti di colonna sarebbe fantastico.
CIAO @awsmagala ,
Sembra che tu stia cercando di fare qualcosa di relativamente semplice in un modo molto complicato.Puoi fare uno stack di tabelle con un elenco di numeri di colonna invece dei nomi di colonna espliciti.Ad esempio, posso impilare tutte le colonne numeriche in Car Physical Data (tabella di dati di esempio) nel solito modo in questo modo:
Data Table( "Car Physical Data" ) << Stack(
columns( :Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
)
O nell'argomento colonne, posso fare questo:
stack_cols = 4::8;
Data Table( "Car Physical Data" ) << Stack(
columns( stack_cols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
Se le colonne che vuoi impilare non sono tutte insieme, puoi semplicemente concatenare insieme i blocchi di numeri di colonna.Spero che questo aiuti.
Inoltre, se vuoi ottenere i nomi effettivi delle colonne in un intervallo, puoi davvero abbreviare la funzione make_col_list in qualcosa del tipo:
col_names = (dt << Get Column Names)[start::end]