Vorbereiten der Listenspaltennamen für die zukünftige VerwendungHallo, ich versuche, eine Liste mit Spaltennamen abzurufen und vorzubereiten, um sie zur späteren Verwendung in einer Variablen zu speichern. Das Problem besteht darin, dass << Get Column Names() alles als Liste von Zeichenfolgen zurückgibt. Nachfolgend erfahren Sie, wie ich am Anfang jeder Elementzeichenfolge ein „:“ eingefügt habe und welche mögliche Verwendung dies haben könnte. Es muss noch mehr getan werden.
names default to here(1);
dt = current data table();
col_names = dt << Get Column Names( ); // retrieves all col names
col_list = {}; // list for holding col names
// loop formats names in way usable to be called on as cols, not strings
for( i = 1 , i <= N items( col_names ), i++,
list_item = ":" || list_item;
Insert Into( col_list, list_item );
);
dt << Ungroup Scripts( col_list ); // example usageEin anderes Beispiel wäre die Verwendung dieser Liste in etwas wie:
Modell anpassen( Y( col_list ) ....
Was ich bekomme: { "ColA", "ColB" }
Was ich will: { :ColA, :ColB }
Ich habe mehrere verwandte Threads zu diesem Thema durchsucht und gefunden, aber die Verwendung der Spaltennamen als Eingabe für eine Funktion ist etwas, worüber ich nicht gestolpert bin.Irgendein Rat?
Erweiterte statistische ModellierungVerbraucher- und MarktforschungInhaltsorganisationDatenmischung und -bereinigungDatenexploration und -visualisierungQualitäts- und VerfahrenstechnikErgebnisse teilen und kommunizierenWindowsBetreff: Listenspaltennamen für zukünftige Verwendung vorbereiten@Thierry_S & @jthi - Danke euch beiden! eval() war das, wonach ich gesucht habe! Ich habe verstanden, dass die Spalte ein Ausdruck ist, aber diesen Befehl habe ich völlig vergessen.
Betreff: Listenspaltennamen für zukünftige Verwendung vorbereitenWenn Sie Spalten verwenden möchten, die als :colname formatiert sind, können Sie diese beispielsweise so erhalten:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = dt << Get Column Names(Continuous, "String");
// dt << Get Column Reference(); /* all references */
/* one option */
col_list1 = dt << Get Column Reference(col_names);
/* second option */
col_list2 = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name))); /* Column() isnt necessary but makes it more robust */
);
show(col_list1, col_list2);
Normalerweise verwende ich sie als Zeichenfolgen und verwende dann je nach Situation Column() oder As Column() (mit etwas Name Expr() im Mix).
Sehr oft reicht es aus, eine Liste von Zeichenfolgen mit Spaltennamen zu verwenden, wenn Sie diese mit Eval() kombinieren.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
col_names = {"OZONE", "CO", "SO2", "NO", "PM10"};
//obj = dt << Cluster Variables(Y(:OZONE, :CO, :SO2, :NO, :PM10));
obj = dt << Cluster Variables(Y(Eval(col_names)));
col_list = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name)));
);
obj = dt << Cluster Variables(Y(col_list)); /* wont work, see log for error */
/* Using Eval() and Eval Expr() */
cv_expr = EvalExpr(
obj = dt << Cluster Variables(Y(Expr(col_list)));
);
Eval(cv_expr);
/* using only Eval inside Y() should also work like earlier */
obj = dt << Cluster Variables(Y(Eval(col_list)));
Betreff: Listenspaltennamen für zukünftige Verwendung vorbereitenHallo,
Ich hatte vor einiger Zeit das gleiche Problem. Die Lösung ist einfach: Sie müssen die Liste auswerten, um die Spaltenreihe zurückzugeben.
dt << Ungroup Scripts( Eval (col_list ));
Am besten,
TS