Aufbautabelle mit JSL, Problem mit "New Column"Hi,
Ich versuche, eine Tabelle in JSL aus einer Datendatei zu erstellen, indem ich die erste Datenzeile der Datei verwende, um den Datentyp zu bestimmen.Ich kann jedoch keine neuen Spalten im Skript mit anderen Typen als numerisch erstellen.Das funktioniert:
dt << New Column("test", Character, Nominal)Dies (vereinfachtes Beispiel) generiert jedoch nur numerische Spalten:
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);
);Das erwartete Verhalten wäre, eine Zeichenspalte und zwei Zahlen zu erstellen.Was bewirkt, dass der Ausdruck type[i] hier ignoriert wird?
Re: Tabelle mit JSL erstellen, Problem mit "New Column"Es klappt! Erweitern Sie dies, was Sie tun können
Eval(
Substitute(
Expr(dt << New Column(__cols__, __type__, ...)),
Expr(__cols__), cols[i],
Expr(__type__), type[i],
...
);
);
Danke!
Re: Tabelle mit JSL erstellen, Problem mit "New Column"Einige Elemente in einer New Column()-Funktion werden beim Analysieren nicht ausgewertet und erfordern daher, dass sie bei der Verarbeitung vollständige JSL-Anweisungen sind.Die Funktion Substitute() ermöglicht dies.Hier ist der Code, den ich verwenden würde, um das zu tun, was Sie tun:
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 ) )
)
)
);