J’ai vraiment aimé mettre en œuvre cette idée.Si mon script peut gérer la sélection de plusieurs lignes (comme pour un tracé combiné), existe-t-il un moyen d'attendre que toutes les lignes soient sélectionnées (comme lorsque vous maintenez la touche Cntrl enfoncée) avant de lancer le script ?
Par exemple, si je veux sélectionner les lignes 1,3,5... actuellement, je dois sélectionner la ligne 1, qui déclenche immédiatement le script, puis fermer la fenêtre générée à partir du script, puis sélectionner la ligne 3 (en maintenant la touche Cntrl enfoncée). ), qui déclenche immédiatement le script, puis ferme la fenêtre générée à partir du script (avec 1 et 3 combinés), puis sélectionne la ligne 5 (en maintenant la touche cntrl enfoncée)... qui déclenche enfin le script avec les 1, 3, combinés. et 5. Serait-il possible de sélectionner 1, 3 et 5... puis de lancer le script ?
Le script ci-dessous concerne un tableau comportant une colonne de formules avec un script permettant de créer des graphiques à partir de lignes.
Lorsqu'une ligne est sélectionnée, le contenu de plusieurs colonnes de la ligne sélectionnée est transformé en un sous-ensemble de tableau, qui est transposé afin de pouvoir être représenté graphiquement avec un tracé de superposition. Le script original qui se trouve dans la colonne de formule commence par être très différent et est inclus sous le script du tableau.
(copiez le script de table dans une fenêtre de script et exécutez le script)
Nouveau tableau( "tableau des résultats",
Ajouter des lignes ( 5 ),
Nouvelle colonne( "Analyse",
Personnage,
Nominal,
Définir les valeurs ({"ANOVA", "Apple", "Bannana", "Orange", "Peach"} )
),
Nouvelle colonne( "Résultat 1",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 2",
Numérique,
Continu,
Format( "", 9 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 3",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 4",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule( Random Uniform() ),
Définir la sélection
),
Nouvelle colonne( "Résultat 5",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 6",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 7",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 8",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Résultat 9",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule (Uniforme aléatoire ())
),
Nouvelle colonne( "Colonne avec formule pour créer des graphiques",
Numérique,
Continu,
Format( "Meilleur", 12 ),
Formule(
Si( Sélectionné( État de la ligne() ),
Évaluer(
Analyser (
Noms par défaut ici ( 1 );
Effacer les symboles ( 1 );
dt0 = Table de données actuelle ();
rn = dt0 << obtenir les lignes sélectionnées ;
tn = dt0:Analyse[rn];
dt1 = Table de données( "tableau des résultats" ) <<
Sous-ensemble (
Table de sortie ( tn[1] ),
colonnes sélectionnées ( 0 ),
Lignes sélectionnées ( 0 ),
Lignes (rn)
);
dt2 = dt1 << colonnes (
:Résultat 1,
:Résultat 2,
:Résultat 3,
:Résultat 4,
:Résultat 5,
:Résultat 6,
:Résultat 7,
:Résultat 8,
:Résultat 9
)` ;
graphique1 = Expr(
dt2 << Tracé de superposition (
Y( Colonne( 2 ) ),
Axes séparés( 1 ),
Connecter via manquant (1)
)
);
journalgraph1 = Eval( graph1 ) << Obtenir le journal ;
Nouvelle fenêtre( "Fenêtre de rapport pour " || tn[1],
Text Box( "Graphique de " || tn[1] ),
Boîte de journal ( journalgraph1 )
);
Fermer( dt1, pas de sauvegarde );
Fermer( dt2, pas de sauvegarde );
)
)
)
)
),
Définir les états de ligne ([0, 0, 0, 0, 1])
)
C'est le script à coller dans la colonne de formule
( 1 ) ;
() ;
( Choisi ( État de la ligne () )
(
(
( 1 ) ;
( 1 ) ;
= tableau de données actuel () ;
= dt0 << obtenir les lignes sélectionnées ;
= dt0 : Analyse [ rn ] ;
= Tableau de données ( "tableau des résultats" ) << Sous-ensemble (
1 ] ) ,
0 ) ,
0 ) ,
//,invisible
;
= dt1 << Transposer (
: Résultat 1 ,
: Résultat 2 ,
: Résultat 3 ,
: Résultat 4 ,
: Résultat 5 ,
: Résultat 6 ,
: Résultat 7 ,
: Résultat 8 ,
: Résultat 9 ,
: Colonne 11
,
: Analyse [ rn ] ) , //cela n'est pas traduit dans la formule
1 ] || "pour le graphique" ) //,invisible
;
= expression ( dt2 << Tracé de superposition ( Oui ( colonne ( 2 ) ) , Axes séparés ( 1 ) , Connecter via Manquant ( 1 ) )) ;
= évaluer ( graphique1 ) << Obtenir le journal ;
( "Fenêtre de rapport pour" || tn [ 1 ] , Zone de texte ( "Graphique de" || tn [ 1 ]) , Boîte à journaux ( journalgraph1 )) ;
( dt1 , pas de sauvegarde ) ;
( dt2 , pas de sauvegarde ) ;
//fin de l'analyse
//fin de l'évaluation
; //fin de si
Merci
J'ai des problèmes pour ajouter tout cela à mon script.
Ce que j'ai essayé de faire, c'est d'obtenir le tableau, puis d'ajouter une colonne avec
" Choisi ( État de la ligne ( Rangée ())) , nom = : Nom du test [( tableau de données actuel () << obtenir les lignes sélectionnées )[ 1 ]] ;
Inclure ( "C:/Utilisateurs/..../Tests/" || Évaluer ( Analyser ( : Nom du test )) || ".jsl" ) ; 1 , 0 ) ;"
Ici "Tests" est mon deuxième dossier de script (celui qui sera utilisé lorsque l'utilisateur clique sur une ligne du tableau).
Mon premier problème est que je n'arrive pas à trouver un moyen de le faire car les guillemets posent problème, et le deuxième est que ce que je fais ici fait partie d'un outil que je veux que les autres personnes avec qui je travaille soient capable d'utiliser. Cela sera-t-il possible étant donné que j'ai maintenant un deuxième script accessible via son chemin de fichier (le script est sur mon bureau) ?
Encore une fois, merci pour votre aide
Olivia
Oui, c'est exactement ce que je veux faire.
Le problème que j'ai est que je dois récupérer ce nom de test dans le script JMP afin de pouvoir l'envoyer à R pour que ma fonction fasse son travail...
J'ai essayé ceci:
Dans une colonne supplémentaire de mon tableau :
If(Selected(Row State(Row())), Include("C:/Users/....jsl" || Eval(Parse(:TestName)) || ".jsl"); 1, 0)
Et puis dans la page de script :
tname = TestName << Obtenir le texte ;
rconn << Envoyer(tname,R Name("tname"));
Je fais évidemment quelque chose de mal car ça ne marche pas...
Si vous entendez déclencher une action de script en sélectionnant une ligne dans le tableau, je vous suggère de jeter un œil à cette démo dans l'échange de fichiers JMP. Tout type d'action dont jsl est capable peut être invoqué en sélectionnant une ligne en utilisant l'astuce utilisée par Ian Cox dans cette démo.
Dans son exemple, les scripts sont en fait des chaînes dans les cellules du tableau mais il devrait être possible d'invoquer des scripts de tableau ou pourquoi pas des scripts autonomes à l'aide de la fonction Include().
Par exemple, essayez la formule de colonne ci-dessous dans une colonne masquée pour exécuter des scripts nommés exactement comme le contenu de la cellule dans une colonne de caractères "testname".
Si ( Choisi ( État de la ligne ( Rangée ())) , Inclure ( "ton chemin" || Évaluer ( : nom du test ) || ".jsl" ) ; 1 , 0 )
Si le nom du test dans la troisième ligne est "ANOVA", alors un script ANOVA.jsl enregistré dans un répertoire avec le chemin "votrechemin" sera exécuté lorsque la troisième ligne est sélectionnée (manuellement mais aussi par script, je suppose).