Todos,
Necesito ayuda en el siguiente caso.
Tengo un nombre de una columna en formato de cadena.
Necesito crear una nueva columna con una fórmula basada en la anterior. yo lo hago asi:
oldCol = "OldColumn";
Eval( Eval Expr( dt << New Column( "NewColumn", formula( As Column( Expr( oldCol ) ) ) ) ) );
Luego, más adelante en el script, necesito cambiar el nombre de la columna anterior. lo hago así:
Column(oldCol) << Set Name("NewOldColumn");El problema ahora es que, dado que tengo la fórmula de la Nueva columna en forma de:
As Column("OldColumn")no se actualiza cuando OldColumn cambia de nombre.
Me gustaría tenerlo en forma de
:OldColumn
pero no se como hacerlo.
Entonces, la pregunta es: ¿Cómo necesito modificar la expresión:
Eval( Eval Expr( dt << New Column( "NewColumn", formula( As Column( Expr( oldCol ) ) ) ) ) );
para que produzca fórmula en forma de :columnaantigua , y no en forma de Como columna ("OldColumn") ?
Aquí está el guión completo para jugar:
dt = New Table( "TestColumnsReferences",
Add Rows( 3 ),
New Column( "OldColumn", Character, "Nominal", Set Values( {"a", "b", "c"} ) )
);
oldCol = (dt << Get Column Names(string))[1];
//oldCol = "OldColumn";
Eval( Eval Expr( dt << New Column( "NewColumn", formula( As Column( Expr( oldCol ) ) ) ) ) );
Column(oldCol) << Set Name("NewOldColumn");Gracias.
Veo una forma de hacerlo (pero prefiero no hacerlo de esta manera).
Obtenga los nombres de las columnas no como cadenas, sino como referencias, y luego simplemente use Nombre Expr() :
oldCol = (dt << Get Column Names())[1];<BR />Eval( Eval Expr( dt << New Column( "NewColumn", formula( Name Expr( oldCol ) ) ) ) );
pero ya tengo el nombre de la columna como una cadena y me gustaría quedarme con ella.