Estoy tratando de hacer una lista de referencias de columna para usarla más tarde al hacer una tabla de datos apilados.
Cuando hago la lista dentro de una función funciona perfectamente bien.Sin embargo, cuando intento lo mismo dentro de un método de clase, no funciona y aparece el mensaje de error: "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;
);
);Arriba está la función que uso en un script.Esta función actualmente no funciona sin problemas.
Sin embargo, cuando intento una idea similar dentro de una clase, no funcionará.A continuación se muestra cómo lo tengo definido dentro de la clase.
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));
);Tengo varios grupos de columnas que intento seleccionar y manipular.
Originalmente traté de usar un método como este:
pv_lst = Column(26::696);
pero tampoco pude hacer que esto funcionara.
Cualquier ayuda sobre cómo generar correctamente una lista o colección de referencias de columna sería genial.
Hola @awsmagala ,
Parece que estás tratando de hacer algo relativamente simple de una manera muy complicada.Puede hacer una pila de tabla con una lista de números de columna en lugar de los nombres de columna explícitos.Por ejemplo, puedo apilar todas las columnas numéricas en Car Physical Data (tabla de datos de muestra) de la forma habitual, así:
Data Table( "Car Physical Data" ) << Stack(
columns( :Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
)
O en el argumento de las columnas, puedo hacer esto:
stack_cols = 4::8;
Data Table( "Car Physical Data" ) << Stack(
columns( stack_cols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
Si las columnas que desea apilar no están todas juntas, simplemente puede concatenar los fragmentos de los números de columna.Espero que eso ayude.
Además, si desea obtener los nombres de columna reales en un rango, realmente podría acortar esa función make_col_list a algo como:
col_names = (dt << Get Column Names)[start::end]