JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?
Das erste Mal, wenn das unten gezeigte Skript ausgeführt wird, gibt diesen Fehler „Name nicht aufgelöst: m{36803} in Zugriff oder Auswertung von ‚m‘, m/*###*/“ zurück, während jede nachfolgende Ausführung diesen Fehler nicht zurückgibt.Warum ist das?
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>
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?Haben Sie versucht, in a zu werfen
Names default to here(1);
am Anfang Ihres Skripts.
Ihre Variable m könnte von einem anderen Skript definiert sein und hier stören, bis sie zum ersten Mal von diesem Skript überschrieben wird.
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?@adjo9835 Haben Sie das Problem gefunden? Ich bekomme diesen Fehler auch mit einer Variablen, nur beim ersten Lauf, aber nicht beim zweiten. Ich verwende JMP 15
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?Vielen Dank! Ich fühle mich ziemlich gut damit, wenn man bedenkt, dass ich JMP zum ersten Mal verwende und dass die Dateikonvertierung keine typische JMP-Anwendung ist.
Ich erhalte immer noch den gleichen Fehler, nur beim ersten Ausführen des Skripts, das unten gezeigt wird.
Das Skript generiert und speichert sogar einen der Splines aus einer der :c_type x :process Where-Klausel-Kombinationen in einer neuen Spalte, bevor es den Fehler ausgibt.Dies bedeutet, dass es eine vollständige Iteration der unten gezeigten for-Schleife durchlaufen hat:
For( n = 1, n <= Length( ctypeArray ), n++,
Der 1 Spline, der erstellt und in einer neuen Spalte gespeichert wurde, wird unten angezeigt:
Ich werde versuchen, auf JMP 14 zu aktualisieren, um zu sehen, ob das das Problem löst.Ich verwende JMP 13.0.0
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?Ziemlich cooles Skript!
Versuchen Sie diese 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 );
);
);
Abgesehen von der Änderung an einem Beispielskript und dem Hinzufügen des NUM()-Wrappers und dem Drucken des Zwischenausdrucks glaube ich nicht, dass ich irgendetwas geändert habe. In JMP 14 sehe ich den von Ihnen beschriebenen Fehler nicht.
Es sieht so aus, als hätte die Zusammenfassung der numerischen Altersspalte eine Liste von Zeichenfolgen und nicht von Zahlen erstellt, also wandelt num sie zurück. Ich glaube nicht, dass dies Teil des ursprünglichen Problems ist, das Sie beschrieben haben.
@EvanMcCorkle
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?Hinzufügen:
show(m,processArray[m]);
zu den Skriptergebnissen im Protokoll:
m = 1;
processArray[m] = "DVT0002B";
Daher muss der Fehler innerhalb von Eval() sein?
Die Datentabelle hat keine Spalten mit dem Namen "m".
Betreff: JSL - Warum erhalte ich beim ersten Ausführen des Skripts einen Fehler, aber beim zweiten Mal funktioniert es?Versuchen Sie so etwas für den Anfang. Liegt der Fehler in diesem Eval? Hat die Tabelle eine Spalte mit dem Namen "m"?
For( m = 1, m <= Length( processArray ), m++,
show(m,processArray[m]); // <<<<<<
Eval( ...
Sie können weiter isolieren, was passiert, indem Sie eine Zwischenvariable verwenden, die das Ergebnis von „substitute“ enthält (und den Namensausdruck ausgibt).