JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?
以下に示すスクリプトを初めて実行すると、「Name Unresolved: m{36803} in access or Evaluation of 'm', m/*###*/」というエラーが返されますが、その後のすべての実行ではこのエラーは返されません。どうしてこれなの?
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 - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?投げてみましたか?
Names default to here(1);
スクリプトの先頭に。
変数 m は別のスクリプトによって定義されている可能性があり、このスクリプトによって初めて上書きされるまで、ここで干渉する可能性があります。
Re: JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?@adjo9835問題は見つかりましたか? 変数を使用してもこのエラーが発生します。最初の実行時のみで、2 回目は発生しません。 JMP15を使用しています
Re: JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?ありがとう! JMP を使用するのはこれが初めてであり、ファイル変換は一般的な JMP アプリケーションではないことを考えると、かなり満足しています。
以下に示すように、スクリプトを初めて実行したときにのみ、同じエラーが引き続き発生します。
このスクリプトは、エラーをスローする前に、:c_type x :process Where 句の組み合わせの 1 つからスプラインの 1 つを生成して新しい列に保存します。以下に示す for ループの完全な反復を 1 回実行したことを意味します。
For( n = 1, n <= Length( ctypeArray ), n++,
作成されて新しい列に保存された 1 つのスプラインを以下に示します。
JMP 14 にアップデートして、問題が解決するかどうかを確認します。JMP 13.0.0 を使用しています
Re: JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?かなりクールなスクリプト!
このバージョンを試す
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 );
);
);
サンプル スクリプトの変更と NUM() ラッパーの追加と中間式の出力以外は、何も変更していないと思います。 JMP 14では、あなたが説明したエラーは表示されません。
数値の年齢列の要約が数字ではなく文字列のリストを作成したように見えるので、num はそれを元に変換します。 これは、あなたが説明した元の問題の一部ではないと思います。
@EvanMcCorkle
Re: JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?追加:
show(m,processArray[m]);
スクリプトを実行すると、ログに次のように表示されます。
m = 1;
processArray[m] = "DVT0002B";
したがって、エラーは Eval()?
データ テーブルには、"m" という名前の列はありません。
Re: JSL - スクリプトを初めて実行するとエラーが発生するのに、2 回目以降は機能するのはなぜですか?このようなものを試してみてください。 エラーはその Eval にありますか? テーブルに「m」という名前の列がありますか?
For( m = 1, m <= Length( processArray ), m++,
show(m,processArray[m]); // <<<<<<
Eval( ...
中間変数で何が起こっているかをさらに分離して、代入の結果を保持 (および nameexpr を出力) することができます。