Datentyp für neue Spalte festlegenHallo, wie kann ich einen Datentyp für eine neue Spalte bedingt und programmgesteuert festlegen? Ich habe eine Problemumgehung, die numerische / Zeichen abdeckt, und sie könnte für andere Typen erweitert werden, aber ich versuche, die folgende Methode (markiert als "funktioniert nicht") zum Laufen zu bringen. Das Protokoll zeigt, dass die Typvariable nicht erkannt wird. Ich habe ein paar Dinge wie parse() ausprobiert, war aber bisher erfolglos.
Names Default To Here( 1 );
dt = open( "$SAMPLE_DATA\Big Class.jmp");
colType = column(dtData,"Name") << get data type;
// doesn't work, error on colType
dt << add multiple columns("New Column", 1, After("Name"), colType);
// works
dt << add multiple columns("New Column", 1, After("Name"), Numeric);
if(colType == "Character", column(dt, "New Column") << data type ("Character"));Betreff: Datentyp für neue Spalte festlegenJim hat es auf den Punkt gebracht; Hier sind ein paar weitere Möglichkeiten, diese Aussage zu konstruieren, falls jemand besser mit Ihrem Code übereinstimmt:
Fügen Sie mit Eval Insert, Eval Expr, Parse und Substitute einen Ausdruck in einen anderen ein
Betreff: Datentyp für neue Spalte festlegenDas Add Multiple Columns scheint keine Analyse vor der eigentlichen Ausführung der Anweisung zu ermöglichen.Daher muss das, was als „Mehrere Spalten hinzufügen“ dargestellt wird, vollständig ausgearbeitet werden, bevor es zur Ausführung an JMP übergeben wird.Hier sind ein paar Möglichkeiten, dies zu tun
Names Default To Here( 1 );
dt = Current Data Table();
coltype = "character";
Eval(
Parse(
Eval Insert(
"dt << add multiple columns(\!"New Column\!", 1, After(\!"Name\!"), ^colType^)"
)
)
);
// or
Eval(
Substitute(
Expr(
dt << add multiple columns(
"New Column",
1,
After( "Name" ),
__type__
)
),
Expr( __type__ ), colType));