Noms de colonnes avec une initiale numériqueMon code bloque avec les noms de colonnes commençant par un chiffre, ce qui le fait penser que le nom représente une date. J'ai renommé la colonne pour résoudre le problème, mais c'est incompréhensible. J'ai également constaté qu'encapsuler l'objet représentant les noms dans une instruction Char(obj) ne fonctionnait pas non plus. Auriez-vous des suggestions pour mieux gérer ce problème ?
dt = Current Data Table();
cnmes = dt << get column names( "string" );
For( j = 1, j <= N Items( cnmes ), j++,
if (Starts With( cnmes[j], "1" ) == 1 | Starts With( cnmes[j], "2" ) == 1 | Starts With( cnmes[j], "3" ) == 1| Starts With( cnmes[j], "4" ) == 1 | Starts With( cnmes[j], "5" ) == 1 | Starts With( cnmes[j], "6" ) == 1 | Starts With( cnmes[j], "7" ) == 1 | Starts With( cnmes[j], "8" ) ==1 | Starts With( cnmes[j], "9" ) == 1 | Starts With( cnmes[j], "0") == 1 ,
Column(cnmes[j]) << set name("_"||cnmes[j])
) );
Automatisation et scriptsRe : Noms de colonnes avec une initiale numériqueVous pouvez utiliser la fonction Column() pour référencer les noms de colonnes dans votre liste « cnmes ». Si vous codez les noms de colonnes en dur, utilisez la commande suivante.
// Report snapshot: Big Class - Graph Builder
Data Table( "Big Class" ) << Graph Builder(
Variables( X( :"1height"n ), Y( :"1height"n ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);

names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// Change column name: height → 1height
try(Data Table( "Big Class" ):height << Set Name( "1height" ));
// Change column name: weight → 3weight
try(Data Table( "Big Class" ):weight << Set Name( "3weight" ));
cnmes = dt << get column names( "string" );
Graph Builder(
Variables( X( column(cnmes[5])), Y( column(cnmes[4]) ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);
Re : Noms de colonnes avec une initiale numériqueVous rencontrez ces problèmes car les noms doivent commencer par un caractère alphabétique ou un trait de soulignement (Guide de script > Blocs de construction JSL > Règles de syntaxe JSL > Noms) . Selon votre utilisation, vous souhaiterez peut-être les renommer ou non (voir les options de txnelson). Pour ce faire, vous pouvez par exemple utiliser une expression régulière avec une expression comme celle-ci.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(0),
Compress File When Saved(1),
New Column("1col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("13col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("0col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("Column 4",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([])
)
);
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
newname = Regex(colname, "^\d+.+", "_\0");
If(!IsMissing(newname),
Column(dt, colname) << Set Name(newname);
);
);