Mira la cadena en la que regresa.
": DATA1,: DATA2,: DATA3"
Intenta ejecutar eso sin las comillas, obtendrás lo mismo.
Si tiene nombres de columna como cadenas, puede hacer algo como esto.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 1 ),
New Column( "Data1", Set Values( [1] )),
New Column( "Data2", Set Values( [2] )),
New Column( "Data3", Set Values( [3] )),
);
// list of column names as strings
list = dt << Get Column Names("string"); // {"Data1", "Data2", "Data3"}
SumExpr = Expr(Sum());
for(i=1, i<=nitems(list), i++,
insert into(SumExpr, Column(dt, list[i]));
);
// see what the sumExpr looks like
show(nameexpr(sumExpr));
// then you have to do some substitute in order to actually get it to run
just_for_show = EvalExpr(
dt << New Column("Another Data", Formula(Expr(nameexpr(SumExpr))));
);
show(nameexpr(just_for_show));
just_for_show();// this will actually run the expression you just created.
// or you could use the list in Sum Directly.
// list of column names as references
list = dt << Get Column Names();
list=list[1::3];
// can do a list directly in Sum()
// should still substitute it in so it's no dependant on then list variable
just_for_show =Substitute(
Expr(
dt << new Column("Yet Another Data", Formula(Sum(DV_LIST)))
),
Expr(DV_LIST), list
);
show(nameexpr(just_for_show));
just_for_show(); // actually evaluates again. Hola a todos,
Tengo una tabla de datos con varias columnas, algunas de las cuales quiero agregar. Como parte de mi secuencia de comandos, selecciono algunas de las columnas, almaceno los nombres de las columnas en una lista y luego espero agregar las columnas seleccionadas usando la función "Suma".
Para hacerlo, necesito crear una cadena ": DATA1,: DATA2,: DATA3" y analizarla en una columna.
New Column( "Addition", Numeric, Continuous, Formula( Parse( Sum( :DATA1, :DATA2, :DATA3 ) ) ) );
A continuación se muestra un fragmento del código que estoy usando:
New Column( "Addition", Numeric, Continuous, Formula( Parse( Sum( :DATA1, :DATA2, :DATA3 ) ) ) );
list = {"DATA1", "DATA2", "DATA3"};
For( i = 1, i <= N Items( list ), i++,
If(
i == 1, string = ":" || Char( Eval( list[Eval( i )] ) ),
i > 1, string = string || "," || ":" || Char( Eval( list[Eval( i )] ) )
)
);
Parse( string );
En la ejecución, aparece el siguiente error:
Inesperado ",". Quizás falta un ";" o ",".
Línea 1 Columna 7:: DATA1►,: DATA2,: DATA3
El texto restante que se ignoró fue
,: DATA2,: DATA3
: DATOS1
¿Hay algo que me falta?
¡Gracias por adelantado!
Gracias por ayudar y la explicación! La columna "Sin embargo, otros datos" en su secuencia de comandos hace exactamente lo que quiero. La columna "Otros datos" parece devolver una celda vacía con un error "necesita argumentos para ser escalares, matrices o listas ...". Trataré de averiguar por qué sucede esto.