Problem beim Skript-Spaltenumschalter mithilfe von Variablen<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich habe ein Problem mit der Skripterstellung des Spaltenumschalters aus Spaltenvariablen, die aus GUI-Anzeigefeldern stammen.Mein Beispiel hier ist der Graph Builder, aber ich habe eine andere Plattform mit ähnlichen Ergebnissen ausprobiert. Ich weiß nicht, ob es daran liegt, wie ich die Spaltennamen erhalte (obj << get items()), also habe ich das alles in die angehängte JSL aufgenommen.Was passieren sollte, ist, dass der Graph Builder ohne Fehler geladen werden sollte, die Spalte „Y“ in der Y-Rolle sein sollte und dann „Y“ plus meine beiden hinzugefügten Dummy-Spalten „temp“ und „temp2“ im Spaltenumschalter sein sollten. Aber im ersten Argument von Column Switcher() scheint es nur zu gefallen, wenn dort Text eingegeben wurde. Wenn ich den Text „Y“ oder „:Y“ eingebe, funktioniert es einwandfrei, aber ich habe keine Möglichkeit gefunden, meine Spaltenvariable, die „Y“ enthält, so zu massieren, dass es funktioniert. Wenn ich die Variable verwende, wird ein Fehler ausgegeben.
Hier ist ein Ausschnitt des Codes, und ich habe ein abgespecktes Skript angehängt, das Beispieldaten öffnet, eine selbst ausgefüllte GUI generiert (klicken Sie einfach auf „OK“), und Sie können sehen, wie die einfache Eingabe der Spaltennamen funktioniert, aber meine vielen Versuche mit Variablen werden nicht durchgeführt. Mache ich etwas falsch oder ist es ein Fehler? Wenn ja, gibt es eine Problemumgehung? Ich verwende JMP 11.2.0.
Beachten Sie, dass dieser Ausschnitt nur als Referenz angezeigt wird. Wenn Sie es ausführen möchten, führen Sie die gesamte angehängte Datei aus. yParamNames ist eine Liste mit den darzustellenden Parametern.„Y“ ist die erste Spalte in dieser Liste.
Graph Builder(
Größe( 570, 559 ),
Variablen (X (Spalte (dtDataOrig,tempName[1])),
Elemente(
Zeile (X, Y, Legende (13), Zeilenreihenfolge (0), Zusammenfassungsstatistik (Mittelwert))
),
Spaltenumschalter(
//"Y", // die Eingabe des Textes des Spaltennamens funktioniert
// funktioniert nicht
//als Spalte(dtDataOrig, Y),
//als Spalte(:Y),
//als Spalte(Y),
//Spalte(Y),
//Spalte(:Y),
yParamNames[1], // <---- Ich würde denken, dass dies funktionieren würde und die einfachste Implementierung wäre, aber ich kann es nicht dazu bringen, eine Variable zu akzeptieren.
yParamNames
)
);
Danke,
Mike
Betreff: Problem beim Scripting des Spaltenumschalters mit VariablenDas hier gemeldete Problem ist schon ein paar Jahre alt, aber ich möchte bestätigen, dass Column Switcher seine Argumente jetzt wie vorgesehen auswertet, sodass Kunden dieses Problem nicht mehr umgehen müssen. Es sollte in JMP 13 und späteren Versionen ordnungsgemäß funktionieren.
Betreff: Problem beim Scripting des Spaltenumschalters mit VariablenDanke David, das funktioniert perfekt.Ich habe mich gefragt, ob ich die Eval(Parse(Eval Insert()))-Technik ausprobieren sollte, wäre aber nicht auf die Idee gekommen, sie zu verwenden, nachdem ich zuerst das Graph Builder-Objekt erstellt hatte.
Vielen Dank auch an PMroz für Ihren Beitrag ... Dieses Drehbuch war eigentlich sozusagen Ihre Idee.Beim letzten Discover Summit hatte ich gefragt, ob ich Temperaturcharakterisierungsdaten als Streudiagramm als Ersatz für meine Excel-Skripte anzeigen möchte, und Sie hatten einen Diagrammersteller mit Spaltenumschalter vorgeschlagen. Funktioniert wunderbar. Danke!
-Mike
Betreff: Problem beim Scripting des Spaltenumschalters mit VariablenVersuchen Sie, den Spaltenumschalter aus der Graph Builder-Funktion herauszunehmen und ihn mithilfe einer Nachricht zu erstellen:
gb = Graph Builder(
Größe(...),
Variablen( ... ),
Elemente( ... )
);
Bewertung ( Analysieren ( Evaluierungseinlage ( „\[
gb << Column Switcher( ^yParamNames[1]^, ^yParamNames^ )
]\" ))) ;
Die Syntax des letzten Stücks ist nicht einfach im Detail zu erklären, aber sie ist einfach zu verwenden.Es verwendet das gleiche Prinzip, das Peter beschrieben hat, jedoch mit einer Syntax, die keine Escape-Sequenzen zum Erstellen der Zeichenfolge erfordert.
Es ist hilfreich, die Reihenfolge zu verstehen, die Sie zum Erstellen dieses letzten Codeabschnitts verwenden.Sie beginnen mit diesem Muster:
Bewertung ( Analysieren ( Evaluierungseinlage ( „\[
]\" ))) ;
Sie schreiben (oder kopieren) Ihren JSL-Code in dieses Muster:
gb << Column Switcher( yParamNames[1], yParamNames )
Um anzuzeigen, dass es Variablen gibt, die dynamisch ausgewertet werden müssen, zitieren Sie sie mit einem Caret-Symbol: ^Variable^
Betreff: Problem beim Scripting des Spaltenumschalters mit VariablenIst es das, was Sie im Sinn hatten? Ich habe es versucht und es verhält sich immer noch genauso.
str = „Graph Builder(
Größe( 570, 559 ),
Variablen (X (Spalte (dtDataOrig,tempName[1])),
Elemente(
Zeile( X, Y, Legende( 13 ), Zeilenreihenfolge( 0 ), Zusammenfassungsstatistik( \!"Mittelwert\!" ) )
),
Spaltenumschalter(
//yParamNames[1],
:Y,
yParamNames
)
);" ;
evalu ( analysieren ( str )) ;
Betreff: Problem beim Scripting des Spaltenumschalters mit VariablenManchmal funktionieren Variablen nicht direkt in JSL.Erstellen Sie den Graph Builder-Code dynamisch als String, von dem Sie wissen, dass er funktioniert, und führen Sie ihn mit eval(parse()) aus.
dt = offen ( „$sample_data\big class.jmp“ ) ;
str = „Graph Builder(
Systemsteuerung anzeigen( 0 ),
Variablen( X( :Gewicht), Y( :Höhe ) ),
Elemente(
Punkte( X, Y, Legende( 1 ), Jitter( 1 ) ),
Anpassungslinie(
X,
Y,
Legende( 4 ),
Vertrauen in die Passform( 1 ),
Zuverlässigkeit der Vorhersage (0),
Grad( \!"Linear\!" ),
Gleichung( 0 ),
Root Mean Square Error (0),
R²( 0 )
)
)
)" ;
evalu ( analysieren ( str )) ;