Table de construction avec JSL, problème avec "Nouvelle colonne"Salut,
J'essaie de construire une table en JSL à partir d'un fichier de données en utilisant la première ligne de données du fichier pour déterminer le type de données. Cependant, je ne peux pas créer de nouvelles colonnes dans le script avec des types autres que Numeric. Cela marche:
dt << New Column("test", Character, Nominal)Cependant, cela (exemple simplifié) ne génère que des colonnes numériques:
cols = {"A", "B", "C"};
type = {};
For(i = 1, i <= N Items(cols), i = i + 1,
type[i] = Match(cols[i],
"A", Expr(Character),
Expr(Numeric);
);
);
For(i = 1, i <= N Items(cols), i = i + 1,
dt << New Column(cols[i], Eval(type[i]), Nominal);
);Le comportement attendu serait de créer une colonne de caractère et deux chiffres. Qu'est-ce qui fait que le type d'expression [i] est ignoré ici?
Re: Construction de table avec JSL, problème avec "New Column"Certains éléments d'une fonction New Column () ne sont pas évalués lors de l'analyse, et nécessitent donc qu'ils soient des instructions JSL complètes lors de leur traitement. La fonction Substitute () permet de le faire. Voici le code que je voudrais utiliser pour faire ce que vous faites:
dt = New Table( "Example" );
cols = {"A", "B", "C"};
type = {};
For( i = 1, i <= N Items( cols ), i = i + 1,
Eval(
Substitute(
Expr(
dt << New Column( cols[i], __type__, Nominal )
),
Expr( __type__ ), Match( cols[i], "A", Expr( Character ), Expr( Numeric ) )
)
)
);Re: Construction de table avec JSL, problème avec "New Column"Ça marche! En étendant cela, vous pouvez faire
Eval(
Substitute(
Expr(dt << New Column(__cols__, __type__, ...)),
Expr(__cols__), cols[i],
Expr(__type__), type[i],
...
);
);
Merci!