Mi è piaciuto molto realizzare questa idea.Se il mio script può gestire più righe selezionate (come per alcuni grafici combinati) c'è un modo per attendere che tutte le righe siano selezionate (come quando si tiene premuto il tasto cntrl) prima di spegnere lo script?
Ad esempio, se voglio selezionare le righe 1,3,5... attualmente devo selezionare la riga 1, che attiva immediatamente lo script, quindi chiudere la finestra generata dallo script, quindi selezionare la riga 3 (tenendo premuto il tasto cntrl ), che lancia immediatamente lo script, quindi chiude la finestra generata dallo script (con 1 e 3 combinati), quindi seleziona la riga 5 (tenendo premuto il tasto cntrl)... che infine spara lo script con 1, 3, e 5. Sarebbe possibile selezionare 1, 3 e 5... e quindi attivare lo script?
Lo script seguente è per una tabella che ha una colonna formula con uno script per creare grafici dalle righe.
Quando viene selezionata una riga, il contenuto di diverse colonne per la riga selezionata viene trasformato in una tabella di sottoinsiemi, che viene trasposta in modo da poter essere rappresentata graficamente con un grafico di sovrapposizione. Lo script originale che si trova nella colonna della formula inizia con un aspetto molto diverso ed è incluso sotto lo script della tabella.
(copia lo script della tabella in una finestra di script ed esegui lo script)
Nuova tabella( "tabella dei risultati",
Aggiungi righe( 5 ),
Nuova colonna ("Analisi",
Carattere,
Nominale,
Imposta valori( {"ANOVA", "Mela", "Bannana", "Arancione", "Pesca"} )
),
Nuova colonna ("Risultato 1",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna ("Risultato 2",
Numerico,
Continuo,
Formato( "", 9 ),
Formula( Uniforme casuale() )
),
Nuova colonna( "Risultato 3",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna ("Risultato 4",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme Casuale() ),
Imposta selezionato
),
Nuova colonna( "Risultato 5",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna( "Risultato 6",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna ("Risultato 7",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna( "Risultato 8",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna( "Risultato 9",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula( Uniforme casuale() )
),
Nuova colonna ("Colonna con formula per creare grafici",
Numerico,
Continuo,
Formato( "Migliore", 12 ),
Formula(
If( Selezionato( Stato riga() ),
valutazione(
Analizza(
Nomi predefiniti qui( 1 );
Cancella simboli( 1 );
dt0 = tabella dati corrente();
rn = dt0 << ottieni le righe selezionate;
tn = dt0:Analisi[rn];
dt1 = Tabella dati( "tabella dei risultati" ) <<
Sottoinsieme(
Tabella di uscita( tn[1] ),
colonne selezionate( 0 ),
Righe selezionate( 0 ),
Righe ( rn )
);
dt2 = dt1 << colonne(
:Risultato 1,
:Risultato 2,
:Risultato 3,
:Risultato 4,
:Risultato 5,
:Risultato 6,
:Risultato 7,
:Risultato 8,
:Risultato 9
)`;
grafico1 = Espr(
dt2 << Grafico di sovrapposizione(
Y( Colonna( 2 ) ),
Assi separati( 1 ),
Connessione mancante( 1 )
)
);
journal1 = Eval( graph1 ) << Ottieni diario;
Nuova finestra( "Finestra rapporto per " || tn[1],
Casella di testo( "Grafico di " || tn[1] ),
Journal Box (journgraph1)
);
Chiudi(dt1, nessun salvataggio);
Chiudi(dt2, nessun salvataggio);
)
)
)
)
),
Imposta stati riga( [0, 0, 0, 0, 1] )
)
Questo è lo script da incollare nella colonna della formula
( 1 ) ;
() ;
( Selezionato ( Stato di riga () )
(
(
( 1 ) ;
( 1 ) ;
= tabella dati corrente () ;
= dt0 << ottenere le righe selezionate ;
= dt0 : Analisi [ rn ] ;
= Tabella dati ( "tabella dei risultati" ) << Sottoinsieme (
1 ] ) ,
0 ) ,
0 ) ,
//,invisibile
;
= dt1 << Trasporre (
: Risultato 1 ,
: Risultato 2 ,
: Risultato 3 ,
: Risultato 4 ,
: Risultato 5 ,
: Risultato 6 ,
: Risultato 7 ,
: Risultato 8 ,
: Risultato 9 ,
: Colonna 11
,
: Analisi [ rn ] ) , //questo non viene tradotto nella formula
1 ] || " per grafico" ) //,invisibile
;
= espr ( dt2 << Trama sovrapposta ( Y ( colonna ( 2 ) ) , Assi separati ( 1 ) , Connetti attraverso mancante ( 1 ) )) ;
= eval ( grafico1 ) << Ottieni il diario ;
( "Finestra rapporto per" || tn [ 1 ] , Casella di testo ( "Grafico di" || tn [ 1 ]) , Scatola del diario ( giornale1 )) ;
( dt1 , nessun salvataggio ) ;
( dt2 , nessun salvataggio ) ;
//fine dell'analisi
//fine val
; //fine di se
Grazie
Ho problemi ad aggiungere tutto questo al mio script.
Quello che ho cercato di fare è ottenere la tabella e quindi aggiungere una colonna con
" Selezionato ( Stato di riga ( Riga ())) , tnome =: TestName [( tabella dati corrente () << ottenere le righe selezionate )[ 1 ]] ;
Includere ( "C:/Utenti/..../Test/" || val ( Analizza ( : TestName )) || ".jsl" ) ; 1 , 0 ) ;"
Qui "Test" è la mia seconda cartella di script (quella che verrà utilizzata quando l'utente fa clic su una riga nella tabella).
Il mio primo problema è che non riesco a trovare un modo per farlo poiché le virgolette stanno causando problemi, e il secondo è che quello che sto facendo qui fa tutto parte di uno strumento che voglio che le altre persone con cui lavoro siano in grado di utilizzare. Sarà possibile visto che ora ho un secondo script a cui si accede tramite il suo percorso file (lo script è sul mio desktop)?
Grazie ancora per il tuo aiuto
Olivia
Sì, è esattamente quello che voglio fare.
Il problema che sto riscontrando è che devo recuperare quel nome di test nello script JMP in modo da poterlo inviare a R affinché la mia funzione faccia il suo lavoro...
Ho provato questo:
In una colonna aggiuntiva nella mia tabella:
If(Selected(Row State(Row()))), Include("C:/Users/....jsl" || Eval(Parse(:TestName)) || ".jsl"); 1, 0)
E poi nella pagina dello script:
tname = TestName << Ottieni testo;
rconn << Send(tname,R Name("tname"));
evidentemente sbaglio qualcosa perchè non funziona...
Se intendi attivare un'azione di script selezionando una riga nella tabella, ti suggerisco di dare un'occhiata questa dimostrazione nello scambio di file JMP. Qualsiasi tipo di azione di cui jsl è capace può essere invocato selezionando una riga usando il trucco che Ian Cox usa in quella demo.
Nel suo esempio gli script sono in realtà stringhe all'interno di celle di tabella, ma dovrebbe essere possibile richiamare script di tabella o, perché no, script standalone usando la funzione Include().
Ad esempio, prova la formula della colonna di seguito in una colonna nascosta per eseguire script denominati esattamente come il contenuto della cella in una colonna di caratteri "testname".
Se ( Selezionato ( Stato di riga ( Riga ())) , Includere ( "Il tuo percorso" || val ( : nome di prova ) || ".jsl" ) ; 1 , 0 )
Se il nome del test nella riga tre è "ANOVA", uno script ANOVA.jsl salvato in una directory con il percorso "tuopercorso" verrà eseguito quando viene selezionata la terza riga (manualmente ma anche tramite script suppongo).