Benutzereingabe für Matched-Pair-SkriptIch möchte ein JMP-Skript für übereinstimmende Paare erstellen, in dem der Benutzer die Spalten für die übereinstimmenden Paare eingibt und ich dann ausgewählte eingegebene Spalten abrufen kann.
also so etwas wie
dt=aktuelle Datentabelle();
passende Paare();
Y, gepaarte Antwort << Ausgewählt werden;
Dann möchte ich die ausgewählten Spalten in meinen eigenen Formeln verwenden. Aber ich kann nicht herausfinden, wie ich die Spalten auswählen kann.
Betreff: Benutzereingabe für Matched-Pair-SkriptIch habe dies als zweistufiges Skript zum Laufen gebracht. Wenn Sie es finden, lassen Sie es mich bitte wissen. Ich möchte diese kombinieren und daraus ein Add-In machen.
Betreff: Benutzereingabe für Matched-Pair-SkriptNormalerweise öffnet das Skript einen modalen Dialog, in dem der Benutzer aufgefordert wird, die Spalten für die Analyse auszuwählen. Sie entladen den Dialog, wenn der Benutzer ihn schließt. Sie verfügen nun über die Spalten, um die Plattform zu starten und mit anderen Berechnungen fortzufahren.
Vor kurzem gab es eine Diskussion darüber, wie Sie den Startdialog wie Sie verwenden, aber einen Verweis auf die Plattform erhalten und die Auswertung des restlichen Skripts steuern können. Ich kann es im Moment nicht finden...
Betreff: Benutzereingabe für Matched-Pair-SkriptIch versuche, ein Skript zu erstellen, das die Plattform für übereinstimmende Paare ausführt, die Spalten abruft, die sie in übereinstimmende Paare eingefügt haben, und diese Spalten dann für zusätzliche Berechnungen verwendet.
Betreff: Benutzereingabe für Matched-Pair-SkriptIch verstehe nicht, was Sie tun wollen. Ich dachte, dass der Benutzer die Matched Pairs-Plattform bereits geöffnet haben würde, bevor Sie Ihr Skript ausführen, und dass Sie die Datenspalten in der Y-Rolle ermitteln müssen. Ihr Code (unten) öffnet stattdessen einfach das Startdialogfeld „Matched Pairs“:
dt = current data table();
Matched Pairs();
Es wird also kein Gliederungsfeld als Referenz vorhanden sein.
Betreff: Benutzereingabe für Matched-Pair-SkriptIch habe gerade Folgendes getan:
dt= aktuelle Datentabelle ();
Passende Paare ();
// Matched Pairs-Plattform finden und Ausdruck dafür erhalten
Fenster = Fensterliste abrufen ();
Für ( w = 1 , w <= N Artikel (Fenster), w++,
title = window[w] << Fenstertitel abrufen ;
Wenn ( Enthält ( Titel, „Übereinstimmende Paare“ ),
obj = Fenster[w][ OutlineBox ( 1 )] << Holen Sie sich ein skriptfähiges Objekt ;
s = obj << Holen Sie sich das Skript ;
Brechen ();
);
);
// Y() benanntes Argument isolieren
s = Arg ( Namensausdruck ( S ), 1 );
n Antwort = N Arg ( Namensausdruck ( S ) );
// Datenspalten in Y-Rolle abrufen
col ref = Aufführen ();
Für ( c = 1 , c <= n Antwort, c++,
Einfügen in (Spaltenreferenz, Arg ( Namensausdruck ( sc ) );
);
// Ergebnisse untersuchen oder die Spaltenverweise im Rest des Skripts für eine Formel verwenden
Zeigen (col ref);
Und dieser Teil funktioniert nicht. Ich erhalte folgende Fehlermeldung:
Das Anzeigefeld kann beim Zugriff oder bei der Auswertung von „window[w][Outline Box(1)]“,window[w][/*###*/Outlinebox(1)] nicht tiefgestellt werden.
Ich habe versucht sicherzustellen, dass dieser Teil funktioniert, bevor ich die Berechnungen mit den ausgewählten Spalten durchführe.
Betreff: Benutzereingabe für Matched-Pair-SkriptNames Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt << Matched Pairs(
Y( :Runtime, :RunPulse, :RstPulse, :MaxPulse ),
Separate Pairs( 0 ),
Reference Frame( 0 )
);
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// isolate Y() named argument
s = Arg( Name Expr( s ), 1 );
n response = N Arg( Name Expr( s ) );
// get data columns in Y role
col ref = List();
For( c = 1, c <= n response, c++,
Insert Into( col ref, Arg( Name Expr( s ), c ) );
);
// examine results, or use the column references in the rest of the script for a formula
Show( col ref );
Betreff: Benutzereingabe für Matched-Pair-SkriptWenn ich das richtig verstehe, funktioniert das, wenn sie zwei Ys einfügen. Was ist, wenn mehr als zwei Ys eingegeben werden? Können Sie dies dann als Liste oder Matrix eingeben? Dann durch die Liste blättern?
Betreff: Benutzereingabe für Matched-Pair-SkriptNachdem ich eine Lösung veröffentlicht hatte, wurde mir klar, dass Sie bei korrekter Interpretation keinen Verweis auf das Matched Pairs-Objekt haben. Du wirst es finden müssen. Hier ist eine aktualisierte Version des Skripts.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// get data columns in Y role
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );
Betreff: Benutzereingabe für Matched-Pair-SkriptIch interpretiere Ihre Anfrage so, dass der Benutzer Matched Pairs bereits gestartet hat und Sie ein Skript dafür ausführen möchten. Das heißt, Ihr Skript fragt den Benutzer nicht nach den Spalten und startet auch nicht die Plattform selbst.
Ich kann keine Meldung finden, die die Datenspalten zurückgibt, die in der Y-Rolle von Matched Pairs verwendet werden. Ich habe einen Ansatz gewählt, bei dem ich das Skript für die gestartete Plattform erhalte und es dann analysiere, um die Datenspalten zu erhalten.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mp = dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// script begins here
s = mp << Get Script;
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );