creare un anelloVoglio aggiungere una colonna con i numeri di riga a più tabelle di dati utilizzando il seguente script:
dt<<NEW column=""></NEW>
Sono ancora nuovo nello scripting. Come posso elaborare automaticamente tutte le mie tabelle di dati? Ho questa riga di informazioni che potrebbe funzionare, ma sembra che ci sia un problema per l'individuazione di "Data Table"...
Names Default To Here( 1 );
// Create a list of data tables to be updated
dtList = {"Table1", "Table2", etc...};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( dtList ), i++,
dt = Data Table( dtList[i] );
Ri: creare un loopGrazie mille Jeff. È perfetto.
Devo assolutamente trovare il tempo per approfondire la lettura della guida allo scripting. Mi aiuterà.Ri: creare un loopHai una serie di problemi.
Hai confuso dirpath E tutti i files e li ha usati in modo errato nel tuo codice. Il risultato di Seleziona directory() , dirpath , sarà una stringa che rappresenta il percorso della directory scelta dall'utente. Hai provato a usarlo nell'indicizzazione del tuo ciclo For () di seguito come se avesse l'elenco dei file.
Il risultato di File nella directory() , tutti i files , sarà l'elenco dei file nella directory. Questo è ciò su cui dovresti ripassare.
Ne avrai bisogno Aprire() le tabelle di dati prima di poter aggiungere la nuova colonna.
Dal momento che il tutti i files list sono solo i nomi dei file, dovrai concatenare la directory, dirpath , nell'argomento di Open().
Infine, dovresti assicurarti che stai solo cercando di aprire le tabelle di dati JMP controllando l'estensione sui file. Nel codice di esempio qui sotto, lo faccio con il Parola() funzione. L'argomento -1 richiede l'ultima parola nella stringa.
dirpath = Pick Directory();
allfiles = Files In Directory( dirpath );
// Loop through each of the files and add the column
Show( allfiles );
For( i = 1, i <= N Items( allfiles ), i++,
If( Word( -1, allfiles[i], "." ) == "jmp",
dt = Open( dirpath || allfiles[i] );
dt << New Column( "Sequence", numeric, formula( Row() ) );
)
);
Dai un'occhiata al Iniziare sezione del Tabelle dati capitolo del Guida alla sceneggiatura per un'introduzione all'utilizzo delle tabelle di dati.
Ri: creare un loopHo commesso un errore nel mio messaggio durante la copia dello script ma ho lavorato con la versione corretta e tuttavia ho ancora un messaggio di errore con l'opzione Debug:
Inaspettato "Per". Forse manca un ; O .
Ri: creare un loopHai "dispath" nel tuo ciclo.Cambialo in "dirpath"
Ri: creare un loopApparentemente. Non è ancora giusto. C'è qualcosa che non va nella riga "For"?
<SPAN class="token comment">dirpath = Pick Directory();<BR />allfiles = Files in Directory (dirpath);<BR />all files<BR /><BR />// Loop through each of the files and add the column</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> dirpath <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> dispath<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"Sequence"</SPAN><SPAN class="token punctuation">,</SPAN> numeric<SPAN class="token punctuation">,</SPAN> formula<SPAN class="token punctuation">(</SPAN><SPAN class="token function">Row</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Ri: creare un loopCi sono comandi per scegliere una directory e per elencare tutti i file in quella directory.
Consiglierei di controllare ogni file se si tratta di un file JMP (ad esempio controllando la fine del file).
dirpath = Pick Directory();
allfiles = Files in Directory(dirpath);
allfiles
Ri: creare un loopSì! Funziona bene !
È possibile richiedere - all'avvio dello script - l'apertura di tutte le tabelle di dati che si trovano in una cartella per eseguire successivamente lo script? Il titolo di ogni file deve essere indicato uno dopo l'altro nella "lista delle tabelle"? Ci vuole molto tempo... come mi consigli di procedere?
grazie in anticipo
Ri: creare un loopIl seguente script funziona per me. In caso contrario, sarebbe utile pubblicare il contenuto del registro (Menu principale => Finestra => Registro) e la versione di JMP che si sta utilizzando.
listoftables = {"Untitled 5", "Untitled 4", "Untitled 3"};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( listoftables ), i++,
dt = Data Table( listoftables[i] );
dt<<NEW column=""></NEW>