J'ai vraiment aimé mettre en œuvre cette idée.Si mon script peut gérer plusieurs lignes sélectionnées (comme pour certains tracés combinés), existe-t-il un moyen d'attendre que toutes les lignes soient sélectionnées (comme lorsque vous maintenez la touche Ctrl 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 finalement 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 est pour une table qui a une colonne de formule avec un script pour créer des graphiques à partir de lignes.
Lorsqu'une ligne est sélectionnée, le contenu de plusieurs des colonnes de la ligne sélectionnée est transformé en un tableau de sous-ensemble, qui est transposé afin qu'il puisse être représenté graphiquement avec un tracé de superposition. Le script d'origine qui se trouve dans la colonne de formule commence par être très différent et est inclus sous le script de table.
(copiez le script de table dans une fenêtre de script et exécutez le script)
Nouvelle Table( "table de résultats",
Ajouter des lignes ( 5 ),
Nouvelle colonne( "Analyse",
Personnage,
Nominal,
Définir les valeurs( {"ANOVA", "Pomme", "Bannane", "Orange", "Pêche"} )
),
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( Uniforme aléatoire() ),
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() )
),
New Column( "Colonne avec formule pour faire des graphiques",
numérique,
Continu,
Format( "Meilleur", 12 ),
Formule(
Si( Sélectionné( État de la ligne() ),
Éval(
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( "table de résultats" ) <<
Sous-ensemble(
Tableau 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 ),
Connexion via manquante( 1 )
)
);
journalgraph1 = Eval( graph1 ) << Get Journal;
Nouvelle fenêtre( "Fenêtre de rapport pour " || tn[1],
Text Box( "Graphe de " || tn[1] ),
Boîte de journal (journgraph1)
);
Close( dt1, pas de sauvegarde );
Close( dt2, pas de sauvegarde );
)
)
)
)
),
Définir les états de ligne ([0, 0, 0, 0, 1])
)
Ceci 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 : Une analyse [ rn ] ;
= Tableau de données ( "tableau de résultat" ) << 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
,
: Une analyse [ rn ] ) , //cela n'est pas traduit dans la formule
1 ] || " pour le graphique" ) //,invisible
;
= expr ( dt2 << Tracé de superposition ( Oui ( colonne ( 2 ) ) , Axes séparés ( 1 ) , Connexion via manquante ( 1 ) )) ;
= eval ( graphique1 ) << Obtenir le journal ;
( "Fenêtre de rapport pour" || tn [ 1 ] , Zone de texte ( "Graphique de" || tn [ 1 ]) , Boîte de journal ( journalgraph1 )) ;
( dt1 , pas de sauvegarde ) ;
( dt2 , pas de sauvegarde ) ;
//fin d'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 la table, puis d'ajouter une colonne avec
" Choisi ( État de la ligne ( Ligne ())) , tname = : Nom du test [( tableau de données actuel () << obtenir les lignes sélectionnées )[ 1 ]] ;
Comprendre ( "C:/Utilisateurs/..../Tests/" || Éval ( Analyser ( : Nom du test )) || ".jsl" ) ; 1 , 0 ) ;"
Ici "Tests" est mon deuxième dossier de script (celui qui sera utilisé lorsque l'utilisateur cliquera sur une ligne du tableau).
Mon premier problème est que je ne peux pas trouver un moyen de le faire car les guillemets causent des problèmes, et le second 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 vu que j'ai maintenant un deuxième script auquel on accède via son chemin de fichier (le script est sur mon bureau) ?
Encore une fois, merci pour votre aide
Olivier
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 que je puisse 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 << Send(tname,R Name("tname"));
Je fais évidemment quelque chose de mal car cela ne fonctionne pas...
Si vous voulez dire 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 à l'aide de l'astuce que Ian Cox utilise 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 ( Ligne ())) , Comprendre ( "ton chemin" || Éval ( : 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).