So gehen Sie mit Anführungszeichen im Spaltennamen um, wenn Sie versuchen, ihn in einer dynamischen Formel zu verwenden<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Angenommen, ich habe eine Tabelle mit den Überschriften „Griechisch“ und „AlsoGreek“ wie folgt:
Griechisch AlsoGriechisch
Alpha Phi
Beta Omega
Gamma Zeta
Das folgende Skript gibt mir eine Spalte namens „concat“, die die beiden Spalten kombiniert (ich habe Tabulatoren zwischen den Concat-Symbolen eingefügt, um die Lesbarkeit zu verbessern).
dt = Aktuelle Datentabelle();
colnames = dt<
colstring=":Name(\!"" || char(colnames[1]) || "\!")";
for(i=2,i<=nitems(colnames),i++,
colstring=colstring || „||“ || ":Name(\!"" || char(colnames ) || "\!")"
);
parsecolstring=parse(colstring);
dt<
Das Seltsame ist, dass der Code nicht funktioniert, wenn ich die Tabellenüberschrift AlsoGreek in Anführungszeichen setze (als „AlsoGreek“).Hier ist die Ausgabe des Fehlerprotokolls (ich habe nach allen Variablen im obigen Code „show“ hinzugefügt, damit ich sehen kann, was passiert ist
colnames = {Greek, Name("\!"AlsoGreek\!"")};
Char(colnames[1]) = "Griechisch";
colstring = ":Name(\!"Greek\!")";
colstring = ":Name(\!"Greek\!")||:Name(\!"\!"AlsoGreek\!"\!")";
„)“ erwartet, aber „AlsoGreek“ gefunden.
Zeile 1 Spalte 25: :Name("Greek")||:Name(""►AlsoGreek"")
Gibt es hierfür eine Lösung?Wenn nicht, gibt es eine Möglichkeit, die Anführungszeichen aus dem Spaltennamen zu extrahieren?Ich habe versucht, \!" mit einem Ersatz zu entfernen, aber JMP erkennt dies nicht als Zeichenfolge ...
Jede Hilfe wäre sehr dankbar!Ich habe >100 Spalten mit Anführungszeichen im Spaltennamen ...
Betreff: Umgang mit Anführungszeichen im Spaltennamen bei der Verwendung in dynamischen FormelnEs war für mich schwer zu verstehen, was Sie erreichen wollten. Wenn Sie jedoch ALLE Spaltennamen in einer JMP-Tabelle verketten und eine neue Spalte mit diesem neuen Namen erstellen möchten, sollte dieser Code für Ihr Beispiel funktionieren:
Indem Sie die Variable NameofNewColumn erstellen und diese in einer New Column-Anweisung verwenden, die in der EVAL-Funktion enthalten ist....könnte dir weiterhelfen.
dt = Aktuelle Datentabelle();
colnames = dt<
NameofNewColumn = "";
For(i=1, i < N Items(colnames)+1, i++,
NameofNewColumn = NameofNewColumn || Char(colnames );
);
eval(dt<
Betreff: Umgang mit Anführungszeichen im Spaltennamen bei der Verwendung in dynamischen FormelnIch denke, ich werde meine eigene Antwort beantworten ...
Das Problem besteht darin, dass JMP nicht erkennt, welche Anführungszeichen mit dem \!" verknüpft sind und welche nicht.Daher vermute ich, dass Probleme auftreten, wenn Sie eine char-Funktion für eine Spalte mit Anführungszeichen verwenden und sie später analysieren oder etwas anderes mit dieser Zeichenfolge tun.
Es gibt zwei Möglichkeiten, damit umzugehen: Die erste Möglichkeit besteht darin, alle Spalten, die Sie verketten möchten, in eine Liste aufzunehmen und dann die Option parse(concat(list)) zu verwenden.
Die andere Möglichkeit (die ich verwendet habe) besteht darin, die Spalten in einer Liste abzurufen und dann die Anführungszeichen mit einer einfachen for-Anweisung zu entfernen:
noquotes={},
for(i=1,n<=nitems(origlist),i++,
insert into(noquotes,substitute(char(origlist ),"\!"",""));
als Name(origlist < );
);
Verwenden Sie die Noquotes-Listennamen, um auf die gewünschten Spalten zu verweisen. Wenn Sie fertig sind, können Sie die Spaltennamen wieder auf ihren ursprünglichen Namen zurücksetzen, indem Sie das obige Skript in umgekehrter Reihenfolge ausführen.