Esecuzione di uno script più volte con input diversi.Ciao
Ho scritto uno script che ottiene alcuni dati, esegue alcune manipolazioni (come ordinamento, ordinamento, sottoinsiemi ecc.) E infine traccia i dati.
È necessario eseguire questo script più volte con input diversi. Come posso farlo?
Questo è quello che ho provato -
in_list = {};
in_list = Associative array(dtin:input) << get keys //this is to get all inputs into a list
for(i=1,i<NITEMS></NITEMS>
Ma lo script viene eseguito solo per il primo input.
Inoltre, salvo ogni output con un nome di file diverso.
Re: Esecuzione di uno script più volte con input diversi.Non codificare il nome della tabella nel join.Utilizzare invece un nome di variabile.Ad esempio, non utilizzare Data Table("Table Namen1") << Join("Table Name2",...), invece usa dt << Join(dt2,...).Se lo fai, puoi fare in modo che le variabili della tabella di dati puntino sempre alla tabella di dati corretta per l'iterazione del ciclo corrente.
Dovresti anche assicurarti di chiudere tutte le tabelle di dati intermedi una volta che non ne hai più bisogno, proprio come hai descritto nel tentativo di risolvere il tuo problema.Mantieni JMP il più ordinato possibile.
Re: Esecuzione di uno script più volte con input diversi.Grazie per la risposta. Dopo un ulteriore debug ho capito la causa principale del mio problema.
Dichiarazione problema: Durante l'esecuzione nel ciclo, la scelta di input viene aggiornata ma il grafico è lo stesso per tutte le scelte di input.
Causa ultima: Ho join nello script. Quindi, ogni volta che lo script viene eseguito, le tabelle vengono salvate con il suffisso 1,2 e così via.
Ma poiché la logica di join ha il nome della tabella originale, le tabelle non vengono aggiornate. Ogni volta che le tabelle vengono unite alle tabelle originali (tabelle create alla prima esecuzione) e il grafico di output è lo stesso.
Soluzione: Ho provato Try(close(out_table,no save)) ma senza fortuna.
Qualsiasi aiuto in questo senso è apprezzato.
Re: Esecuzione di uno script più volte con input diversi.Non dovresti davvero aver bisogno di una cosa del genere.Se sei disposto a pubblicare uno script più completo, posso aiutarti a determinare dove si trova il tuo problema.Stop() termina completamente l'esecuzione dell'intero script.Break() termina l'esecuzione di un ciclo. Continue() è praticamente esattamente quello che hai descritto; interrompe l'iterazione corrente e torna all'inizio del ciclo.
Re: Esecuzione di uno script più volte con input diversi.Grazie per la risposta.
Ho pensato di avere uno stop() in un'istruzione if all'interno del ciclo for che sta causando problemi.
Sostituito con continue(), ma questo non risolve il problema.
Esiste una funzione in grado di interrompere solo l'iterazione corrente e continuare con quella successiva?
Grazie
Re: Esecuzione di uno script più volte con input diversi.Ti manca un punto e virgola sulla seconda riga, ma presumo che tu ne abbia uno nella tua sceneggiatura attuale.Il problema probabilmente risiede all'interno del tuo ciclo (a proposito, il secondo argomento del tuo ciclo for dovrebbe probabilmente essere "<=" anziché "<" o ti mancherà l'ultimo elemento nella tua lista).Ecco un esempio molto semplice di uno script funzionante che utilizza il tuo approccio:
Innanzitutto, ho creato una tabella per ottenere alcuni input:
Quindi eseguo questo script:
dt = Current Data Table();
in_list = Associative Array(dt:input) << get keys;
for(i=1, i<=N Items(in_list), i++,
Print(in_list[i]);
);
Ecco l'output del registro:
Potrebbe aiutarti a scrivere una funzione che puoi valutare all'interno del ciclo con valori diversi per gli argomenti ogni volta.Ciò ti consentirà di sviluppare e testare la funzione al di fuori del ciclo in modo che sia più facile risolvere i problemi.