Ottieni script di colonna usando For LoopHo una tabella dati con un mucchio di nuove colonne basate su formule che ho faticosamente inserito manualmente. Voglio creare uno script JSL che mi consenta di ricreare tutte queste colonne in un'altra tabella.
Il seguente script restituirà quello che voglio per una singola colonna:
dt=current data table();
column(dt,1) << Get script;
Volevo automatizzarlo utilizzando un ciclo FOR, ma non riesco a farlo funzionare. Qualche suggerimento su come risolvere questo problema sarebbe molto apprezzato!
Ecco cosa ho provato:
dt=current data table();
j= N cols(dt);
For( i = 1, i <=j , i++,
Column(dt,i) << Get Script;
);
Ri: Ottieni script di colonna usando For LoopCiao @ cjohnson6 ,
Il Copia script per il componente aggiuntivo Colonne selezionate farà proprio questo: seleziona la colonna della formula, esegui il componente aggiuntivo e lo script combinato per tutte le colonne selezionate verrà copiato negli appunti in modo da poterlo incollare nel flusso di lavoro JSL.
@julian
Ri: Ottieni script di colonna usando For LoopPer riferimento, la parte aziendale dello script del componente aggiuntivo è la seguente:
//collist is a list of the formula columns to be copied
For( i = 1, i <= N Items( collist ), i++,
//create a new column in the copy to data table
//substitute replaces the form in the New Column() expression with the formula from
//the source column
Eval(
Substitute(
Expr(
dt2 <<
New Column(
Column(
chosen,
Char( collist[i] )
) << get name,
formula( form )
)
),
Expr( form ),
Column( chosen, Char( collist[i] ) )
<< get formula
)
)
);
Ri: Ottieni script di colonna usando For LoopHo appena caricato un Copia il componente aggiuntivo Formule al Scambio di file .
Vi darà un modo interattivo per farlo dal menu Componenti aggiuntivi.

Non c'è bisogno di scrivere la tua sceneggiatura.
Ri: Ottieni script di colonna usando For LoopÈ possibile ottenere lo script per l'intera tabella di dati contemporaneamente
dt = Current Data Table();
myScript = dt << get script;
Lo svantaggio è che porterà tutti i dati incorporati nello script. Quindi, la cosa più facile da fare è cancellare prima i dati e poi recuperare lo script
dt = Current Data Table();
dt << select all rows << delete rows;
myScript = dt << get script;
Quindi diventa una semplice questione di modificare lo script recuperato.
Per quanto riguarda il tuo script, quello che presumo tu stia cercando di fare è visualizzare i risultati del tuo << get script nel log, così da poter tagliare e incollare da lì. In genere, JMP mostra gli ultimi risultati dell'ultima istruzione durante l'esecuzione di uno script. Pertanto, quando si esegue solo una colonna << get script, vengono visualizzati i risultati. Se si desidera farlo in un ciclo, è necessario forzare i risultati nel registro utilizzando una funzione Scrivi, Stampa o Mostra.
dt = Current Data Table();
j = N Cols( dt );
For( i = 1, i <= j, i++,
Show( Column( dt, i ) << Get Script )
);
Oppure, se si desidera mantenere i valori in una struttura con cui si può lavorare a livello di codice, è possibile posizionare i risultati in un elenco
dt = Current Data Table();
myList = {};
j = N Cols( dt );
For( i = 1, i <= j, i++,
myList[i] = Column( dt, i ) << Get Script
);