Tout,
Besoin d'aide dans le cas suivant.
J'ai un nom de colonne dans un format de chaîne.
Je dois créer une nouvelle colonne avec une formule basée sur l'ancienne. je fais comme ça :
oldCol = "OldColumn";
Eval( Eval Expr( dt << New Column( "NewColumn", formula( As Column( Expr( oldCol ) ) ) ) ) );
Ensuite, plus tard dans le script, je dois renommer l'ancienne colonne. je le fais comme ça:
Column(oldCol) << Set Name("NewOldColumn");Le problème maintenant est que puisque j'ai la formule de la nouvelle colonne sous la forme de :
As Column("OldColumn")il ne se met pas à jour lorsque OldColumn change de nom.
J'aimerais l'avoir sous forme de
:OldColumn
mais je ne sais pas comment faire ça.
Donc, la question est: Comment dois-je modifier l'expression:
Eval( Eval Expr( dt << New Column( "NewColumn", formula( As Column( Expr( oldCol ) ) ) ) ) );
de sorte qu'il produit une formule sous la forme de :AncienneColonne , et non sous la forme de Comme colonne("OldColumn") ?
Voici le script complet avec lequel jouer :
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");Merci, M
Je vois une façon de faire cela (mais plutôt de ne pas le faire de cette façon).
Obtenez les noms de colonnes non pas sous forme de chaînes, mais sous forme de références, puis utilisez simplement Nom Expr() :
oldCol = (dt << Get Column Names())[1];<BR />Eval( Eval Expr( dt << New Column( "NewColumn", formula( Name Expr( oldCol ) ) ) ) );
mais j'ai déjà le nom de la colonne sous forme de chaîne et je voudrais m'y tenir.