JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?
La prima volta che si esegue lo script mostrato di seguito viene restituito questo errore "Nome non risolto: m{36803} in accesso o valutazione di 'm', m/*###*/", mentre ogni esecuzione successiva non restituisce quell'errore.Perchè è questo?
DataCV=open("C:\Desktop\JMP\sample_CV_data.csv");
Summarize( DataCV, processArray = By( :process ) );
Summarize( DataCV, ctypeArray = By( :c_type ) );
For( n = 1, n <= Length( ctypeArray ), n++, // Generates and saves all splines by :c_type and :process
For( m = 1, m <= Length( processArray ), m++,
Eval(
Substitute(
Expr(
biv = Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == __ctype__ & :process == __process__ ),
Fit Spline( 0.1, standardized, {save predicteds} )
)
),
Expr( __process__ ), processArray[m],
Expr( __ctype__ ), ctypeArray[n],
)
)
);
);
(Data Table( DataCV ) << Tabulate( // Create new table
Add Table(
Column Table( Analysis Columns( :Spline Predictor for c_mm_deembed_pf Where ) ),
Row Table( Grouping Columns(:serial_num, :process, :c_type, :v_dut_volt ) )
)
)) << Make Into Data Table;
currentDataTable()<<ADDROWS></ADDROWS>
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?Hai provato a inserire un
Names default to here(1);
all'inizio del tuo script.
La tua variabile m potrebbe essere definita da un altro script e potrebbe interferire qui fino a quando non viene sovrascritta per la prima volta da questo script.
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?@adjo9835 Hai trovato il problema? Ricevo anche questo errore con una variabile, solo alla prima esecuzione ma non alla seconda. Sto usando JMP 15
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?Grazie! Mi sento abbastanza bene considerando che questa è la prima volta che utilizzo JMP e che la conversione di file non è una tipica applicazione JMP.
Ricevo ancora lo stesso errore, solo la prima volta che eseguo lo script, mostrato di seguito.
Lo script genera e salva anche una delle spline da una delle combinazioni :c_type x :process Where-clause, in una nuova colonna, prima di generare l'errore.Implicando che ha attraversato un'iterazione completa del ciclo for mostrato di seguito:
For( n = 1, n <= Length( ctypeArray ), n++,
La 1 spline che è stata creata e salvata in una nuova colonna è mostrata di seguito:
Proverò ad aggiornare a JMP 14, per vedere se questo risolve il problema.Ho utilizzato JMP 13.0.0
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?Sceneggiatura piuttosto interessante!
Prova questa versione
DataCV = Open( "$sample_data/big class.jmp" );
Summarize( DataCV, processArray = By( :age ) );
Summarize( DataCV, ctypeArray = By( :sex ) );
For( n = 1, n <= Length( ctypeArray ), n++,
Show( n, ctypeArray[n] );
For( m = 1, m <= Length( processArray ), m++,
Show( m, processArray[m] );
temp = Substitute(
Expr(
biv = Bivariate(
Y( :height ),
X( :weight ),
Where( :sex == __ctype__ & :age == Num( __process__ ) ),
Fit Spline( 0.1, standardized, {save predicteds} )
)
),
Expr( __process__ ), processArray[m],
Expr( __ctype__ ), ctypeArray[n],
);
Show( Name Expr( temp ) );
Eval( temp );
);
);
A parte la modifica a uno script di esempio e l'aggiunta del wrapper NUM() e la stampa dell'espressione intermedia, non credo di aver cambiato nulla. In JMP 14, non vedo l'errore che descrivi.
Sembra che il riepilogo della colonna numerica dell'età abbia creato un elenco di stringhe anziché di numeri, quindi num lo converte di nuovo. Non credo che questo sia parte del problema originale che hai descritto.
@EvanMcCorkle
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?Aggiungendo:
show(m,processArray[m]);
allo script risulta nel log che mostra:
m = 1;
processArray[m] = "DVT0002B";
pertanto, l'errore deve essere all'interno di Eval()?
La tabella dati non ha colonne denominate "m".
Re: JSL - Perché viene visualizzato un errore la prima volta che eseguo lo script, ma la seconda volta funziona?Prova qualcosa del genere per cominciare. L'errore è in quell'Eval? La tabella ha una colonna denominata "m"?
For( m = 1, m <= Length( processArray ), m++,
show(m,processArray[m]); // <<<<<<
Eval( ...
Puoi isolare ulteriormente ciò che sta accadendo con una variabile intermedia per contenere (e stampare il nameexpr) il risultato del sostituto.