Mi è davvero piaciuto implementare questa idea.Se il mio script è in grado di gestire la selezione di più righe (come per una trama combinata) esiste un modo per attendere che tutte le righe vengano selezionate (come quando si tiene premuto il tasto cntrl) prima di avviare 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 avvia 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 avvia lo script con la combinazione 1, 3, e 5. Sarebbe possibile selezionare 1, 3 e 5... e poi avviare 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 sottoinsieme, che viene trasposta in modo da poter essere rappresentata graficamente con un grafico sovrapposto. Lo script originale presente 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", "Apple", "Bannana", "Orange", "Peach"})
),
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(
Se (selezionato (stato riga()),
Valutazione(
Analizza(
Nomi predefiniti qui (1);
Simboli chiari( 1 );
dt0 = Tabella dati corrente();
rn = dt0 << ottieni le righe selezionate;
tn = dt0:Analisi[rn];
dt1 = Tabella dati ("tabella dei risultati") <<
Sottoinsieme(
Tabella di output( tn[1]),
colonne selezionate( 0 ),
Righe selezionate( 0 ),
Righe(rn)
);
dt2 = dt1 <
:Risultato 1,
:Risultato 2,
:Risultato 3,
:Risultato 4,
:Risultato 5,
:Risultato 6,
:Risultato 7,
:Risultato 8,
:Risultato 9
)`;
grafico1 = Espr(
dt2 << Grafico sovrapposto(
Y(Colonna(2)),
Assi separati( 1 ),
Connetti attraverso la mancanza( 1 )
)
);
journalgraph1 = Eval( graph1 ) << Ottieni diario;
Nuova finestra( "Finestra rapporto per " || tn[1],
Casella di testo( "Grafico di " || tn[1] ),
Scatola del diario (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 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
;
= espressione ( dt2 << Trama sovrapposta ( Y ( colonna ( 2 ) ) , Assi separati ( 1 ) , Connettiti in mancanza ( 1 ) )) ;
= eval ( grafico1 ) << Ottieni il diario ;
( "Finestra rapporto per" || tn [ 1 ] , Casella di testo ( "Grafico di" || tn [ 1 ]) , Scatola del diario ( journalgraph1 )) ;
( dt1 , nessun salvataggio ) ;
( dt2 , nessun salvataggio ) ;
//fine dell'analisi
//fine della valutazione
; //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 riga ( Riga ())) , nome =: NomeProva [( tabella dati corrente () << ottenere le righe selezionate )[ 1 ]] ;
Includere ( "C:/Utenti/..../Test/" || Val ( Analizzare ( : NomeProva )) || ".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 perché le virgolette causano 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 lo 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 reinserire il nome del test nello script JMP in modo da poterlo inviare a R affinché la mia funzione esegua il suo lavoro...
Ho provato questo:
In una colonna aggiuntiva nella mia tabella:
If(Selezionato(Stato riga(Riga())), Include("C:/Users/....jsl" || Eval(Parse(:TestName)) || ".jsl"); 1, 0)
E poi nella pagina dello script:
tname = TestName << Ottieni testo;
rconn << Invia(tnome,R Nome("tnome"));
Evidentemente sbaglio qualcosa perché non funziona...
Se intendi attivare un'azione di script selezionando una riga nella tabella, ti suggerisco di dare un'occhiata a questa dimostrazione nello scambio di file JMP. Qualsiasi tipo di azione di cui è capace jsl può essere invocato selezionando una riga utilizzando il trucco utilizzato da Ian Cox in quella demo.
Nel suo esempio gli script sono in realtà stringhe all'interno delle celle della tabella, ma dovrebbe essere possibile richiamare script di tabella o, perché no, script autonomi utilizzando la funzione Include().
Ad esempio, prova la formula di colonna seguente in una colonna nascosta per eseguire script denominati esattamente come il contenuto della cella in una colonna di caratteri "testname".
Se ( Selezionato ( Stato riga ( Riga ())) , Includere ( "Il tuo percorso" || Val ( : nomeprova ) || ".jsl" ) ; 1 , 0 )
Se il nometest nella riga tre è "ANOVA", uno script ANOVA.jsl salvato in una directory con percorso "yourpath" verrà eseguito quando viene selezionata la terza riga (manualmente ma anche tramite script immagino).