JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?
La première exécution du script ci-dessous renvoie cette erreur "Name Unresolved : m{36803} in access or evaluation of 'm', m/*###*/", tandis que chaque exécution suivante ne renvoie pas cette erreur.Pourquoi est-ce?
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 - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?Avez-vous essayé de jeter un
Names default to here(1);
au début de votre script.
Votre variable m pourrait être définie par un autre script et elle pourrait interférer ici jusqu'à ce qu'elle soit écrasée pour la première fois par ce script.
Re : JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?@adjo9835 Avez-vous trouvé le problème ? J'obtiens également cette erreur avec une variable, uniquement lors de la première exécution mais pas de la seconde. J'utilise JMP 15
Re : JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?Merci! Je me sens plutôt bien étant donné que c'est la première fois que j'utilise JMP et que la conversion de fichiers n'est pas une application JMP typique.
Je reçois toujours la même erreur, uniquement lors de la première exécution du script, illustré ci-dessous.
Le script génère et enregistre même l'une des splines de l'une des combinaisons :c_type x :process Where-clause, dans une nouvelle colonne, avant de générer l'erreur.Cela implique qu'il est passé par une itération complète de la boucle for illustrée ci-dessous :
For( n = 1, n <= Length( ctypeArray ), n++,
La spline 1 qui a été créée et enregistrée dans une nouvelle colonne est illustrée ci-dessous :
Je vais essayer de mettre à jour JMP 14, pour voir si cela résout le problème.J'utilise JMP 13.0.0
Re : JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?Scénario plutôt sympa !
Essayez cette version
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 );
);
);
À part la modification d'un exemple de script et l'ajout du wrapper NUM() et l'impression de l'expression intermédiaire, je ne pense pas avoir changé quoi que ce soit. Dans JMP 14, je ne vois pas l'erreur que vous décrivez.
Il semble que le résumé de la colonne d'âge numérique ait fait une liste de chaînes plutôt que de nombres, donc num la reconvertit. Je ne pense pas que cela fasse partie du problème initial que vous avez décrit.
@EvanMcCorkle
Re : JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?Ajouter:
show(m,processArray[m]);
aux résultats du script dans le journal indiquant :
m = 1;
processArray[m] = "DVT0002B";
par conséquent, l'erreur doit être à l'intérieur de Eval()?
La table de données n'a pas de colonnes nommées "m".
Re : JSL - Pourquoi est-ce que j'obtiens une erreur lors de la première exécution du script, mais que la deuxième fois fonctionne ?Essayez quelque chose comme ça pour commencer. L'erreur est-elle dans cet Eval ? La table a-t-elle une colonne nommée "m" ?
For( m = 1, m <= Length( processArray ), m++,
show(m,processArray[m]); // <<<<<<
Eval( ...
Vous pouvez isoler davantage ce qui se passe avec une variable intermédiaire pour contenir (et imprimer le nameexpr) le résultat de substitution.