Re: JSL: script per cambiare gli stati di riga che non funzionanoLe formule di colonna di JMP sono valutate in background; per le tabelle con formule complicate e molte righe questo consente a JMP di rimanere interattivo durante le valutazioni delle formule. Puoi scorrere la tabella e lavorare con altre tabelle e piattaforme.
L'invio del messaggio << runFormulas alla tabella fa terminare la valutazione delle formule prima che accada qualcos'altro. Usare wait (N) non è una buona risposta perché non c'è modo di sapere quanto aspettare. Ho provato ad aspettare (0) e non è stato abbastanza lungo. Un'attesa di un secondo ha funzionato, ma è stata un po 'più lunga del necessario. << runFormulas non esegue nuovamente le formule se hanno già terminato la valutazione, quindi è possibile utilizzarlo senza preoccuparsi di rallentare il codice JSL.
Nell'esempio, il JSL è ancora in esecuzione e non è stata trovata alcuna opportunità per l'elaborazione in background delle formule di colonna nel punto in cui la colonna della formula viene copiata. Se si esegue l'ultima riga separatamente, la valutazione in background avviene prima che venga eseguita l'ultima riga, quindi gli stati delle righe vengono aggiornati con i valori calcolati.
Spesso JMP è consapevole del fatto che le formule devono terminare la valutazione; lanciando una nuova piattaforma, per esempio. << CopyToRowStates non è a conoscenza, ancora. Grazie per segnalarlo.
Non ho visto un arresto anomalo con wait (0). Se l'arresto anomalo è riproducibile, si prega di lavorare con il supporto tecnico per inviare lo script e i file dei rapporti sugli arresti anomali.
Re: JSL: script per cambiare gli stati di riga che non funzionanocon wait (0); JMP si arresta in modo anomalo. Esegui le formule, funziona.
Grazie! Tuttavia, non riesco ancora a capire perché
Per ricapitolare:
1) Creo un numero casuale
2) Creo colonne di stato riga in base ai numeri casuali
3) Assegno gli stati delle righe in base alle colonne dello stato delle righe
Qualsiasi motivo particolare per cui 2) può essere eseguito senza la necessità di specificare "Esegui formule" dopo 1), ma, per 3) funzionare, devo specificare le formule di esecuzione dopo 2)? C'è una ragione logica o è questa una delle tante stranezze non documentate del linguaggio di scripting JSL?
Re: JSL: script per cambiare gli stati di riga che non funzionanoProva a inviare il messaggio Esegui formule alla tabella dei dati. Questo messaggio completa tutte le valutazioni di formula prima di passare alla successiva istruzione JSL.
dt << esegui le formule;
Se ciò non funziona, prova a mettere invece wait (0).
JSL: lo script per modificare gli stati delle righe non funzionaHo creato questo semplice script per dividere una tabella di dati in sottoinsiemi di training, test e validazione, creando colonne di stato delle righe.
Ho quindi una riga di codice alla fine che significa copiare gli stati delle righe dalla colonna dello stato delle righe "Set di addestramento".
La cosa strana è che se eseguo l'intero script, gli stati delle righe non vengono copiati. Se eseguo prima tutto, tranne l'ultima riga e poi l'ultima riga separatamente, allora funziona.
Qualche idea su come risolvere questo problema? Mi sto perdendo qualcosa o è un bug?
Grazie!
New Column( "Random", Numeric, Formula( Random Uniform() ) );
New Column( "Data Set Indicator",
Character,
Formula( If( :Random <= 0.6, "Training", 0.6 < :Random <= 0.8, "Validation", "Test" ) )
);
New Column( "Training set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Training" ),
Hidden State( :"Data Set Indicator" != "Training" )
)
)
);
New Column( "Validation set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Validation" ),
Hidden State( :"Data Set Indicator" != "Validation" )
)
)
);
New Column( "Test set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Test" ),
Hidden State( :"Data Set Indicator" != "Test" )
)
)
);
Column( "Training set" ) << Copy to row states();
Ri: JSL: lo script per modificare gli stati delle righe non funzionaCome risultato di questo thread, a partire da JMP 12, il messaggio << Esegui formule () viene chiamato automaticamente dietro le quinte con una nuova tabella ().