Entrée utilisateur pour le script de paires appariéesJe voudrais créer un script JMP pour les paires appariées, où l'utilisateur saisirait les colonnes pour les paires de correspondances, puis je pourrais obtenir les colonnes sélectionnées qui ont été entrées.
donc quelque chose comme
dt=table de données actuelle();
paires appariées();
Y, Réponse jumelée << Get Selected ;
Ensuite, je veux utiliser les colonnes sélectionnées dans mes propres formules. Mais je ne peux pas comprendre comment obtenir les colonnes sélectionnées.
Re : entrée de l'utilisateur pour le script de paire appariéeJ'ai obtenu ce travail comme un script en deux étapes. Si vous le trouvez, merci de me le faire savoir. Je voudrais les combiner et en faire un complément.
Re : entrée de l'utilisateur pour le script de paire appariéeHabituellement, le script afficherait une boîte de dialogue modale pour demander à l'utilisateur de sélectionner les colonnes à analyser. Vous déchargez la boîte de dialogue lorsque l'utilisateur la ferme. Vous avez maintenant les colonnes pour lancer la plateforme et continuer avec d'autres calculs.
Il y a eu une discussion très récente sur la façon d'utiliser la boîte de dialogue de lancement comme vous l'avez fait, mais d'obtenir une référence à la plate-forme et de contrôler l'évaluation du reste du script. Je ne le trouve pas pour le moment...
Re : entrée de l'utilisateur pour le script de paire appariéeJ'essaie de faire un script qui exécute la plate-forme de paires appariées, obtient les colonnes qu'ils mettent en paires appariées, puis utilise ces colonnes pour des calculs supplémentaires.
Re : entrée de l'utilisateur pour le script de paire appariéeJe ne comprends pas ce que vous essayez de faire. Je pensais que l'utilisateur aurait déjà ouvert la plate-forme Matched Pairs avant d'exécuter votre script et que vous deviez découvrir les colonnes de données dans le rôle Y. Votre code (ci-dessous) ouvrira simplement la boîte de dialogue de lancement des paires appariées :
dt = current data table();
Matched Pairs();
Il n'y aura donc pas de boîte de contour à référencer.
Re : entrée de l'utilisateur pour le script de paire appariéeJe viens de faire ceci :
dt= tableau de données actuel ();
Paires assorties ();
// trouve la plate-forme Matched Pairs et obtient son expression
fenêtre = Obtenir la liste des fenêtres ();
Pour ( w = 1 , w <= N articles ( fenêtre ), w++,
titre = fenêtre[w] << Obtenir le titre de la fenêtre ;
Si ( Contient ( titre, "Paires assorties" ),
obj = fenêtre[w][ ContourBox ( 1 )] << Obtenir un objet scriptable ;
s = obj << Obtenir le scénario ;
Casser ();
);
);
// isole l'argument nommé Y()
s = Arg ( Nom Expr (s), 1 );
n réponse = NArg ( Nom Expr ( s ) );
// récupère les colonnes de données dans le rôle Y
réf col = Liste ();
Pour ( c = 1 , c <= n réponse, c++,
Insérer dans (col réf, Arg ( Nom Expr ( s ), c ) );
);
// examine les résultats ou utilise les références de colonne dans le reste du script pour une formule
Montrer (col ref);
Et cette partie ne fonctionne pas, j'obtiens cette erreur :
Impossible d'afficher la zone d'indice dans l'accès ou l'évaluation de 'window[w][Outline Box(1)]',window[w][/*###*/Outlinebox(1)]
J'essayais de m'assurer que cette partie fonctionnait avant de faire les calculs avec les colonnes sélectionnées.
Re : entrée de l'utilisateur pour le script de paire appariéeNames 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 );
Re : entrée de l'utilisateur pour le script de paire appariéeSi je comprends bien, cela fonctionnera s'ils mettent deux Y. Et s'ils mettent plus de deux Y, pouvez-vous les mettre sous forme de liste ou de matrice ? Ensuite, parcourez la liste ?
Re : entrée de l'utilisateur pour le script de paire appariéeJ'ai réalisé après avoir publié une solution que si mon interprétation est correcte, vous n'aurez pas de référence à l'objet Matched Pairs. Vous devrez le trouver. Voici une version mise à jour du script.
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 );
Re : entrée de l'utilisateur pour le script de paire appariéeJ'interprète votre demande comme signifiant que l'utilisateur a déjà lancé Matched Pairs et que vous souhaitez exécuter un script dessus. C'est-à-dire que votre script ne demande pas les colonnes à l'utilisateur et ne lance pas la plate-forme elle-même.
Je ne trouve pas de message qui renvoie les colonnes de données utilisées dans le rôle Y de Matched Pairs. J'ai adopté une approche où j'obtiens le script de la plate-forme lancée, puis je l'analyse pour obtenir les colonnes de données.
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 );