大きなテーブルでのみJMPスクリプトエラーが発生する:配列の最大長こんにちはJMPコミュニティ、
以下のスクリプトを使用すると、最大500列のテーブルに最適ですが、20,000列の大きなテーブルで使用すると奇妙な問題に遭遇しました。基本的に、スクリプトは正常に完了したように見えます。手動で検証したように、値はかなりランダムです。
何が起きているのかについての手がかりはありますか。これは、データを収集するために使用する配列の最大長を超えているためにメモリ割り当てエラーが発生した可能性があることを推測しています。
注:データの機密性が高いため、作業中の大きなテーブルを共有することはできません
ありがとう、
Names Default to Here (1);
dt = Current Data Table ();
m = {};
m1 = [];
m2 = [];
m3 = [];
m4 = [];
For (i = 12 , i <= N Col (dt),i++,
mv = Multivariate(
Y( :BIOMARKER, column(i) ),
Estimation Method( "Row-wise" ),
Scatterplot Matrix(
Density Ellipses( 1 ),
Shaded Ellipses( 0 ),
Ellipse Color( 3 )
),
Spearman's ρ( 1 ),
Kendall's τ( 1 )
);
mvr = mv << report;
insert into (m, Column Name (i));
m1 = m1 || ((mvr [Outline Box (1)] [Number Col Box (1)])<< get) [1];
m2 = m2 || ((mvr [Outline Box (1)] [Number Col Box (2)])<< get) [1];
m3 = m3 || ((mvr [Outline Box (1)] [Number Col Box (3)])<< get) [1];
m4 = m4 || ((mvr [Outline Box (1)] [Number Col Box (4)])<< get) [1];
mv << close window;
);
New Table ("Non-Parametric Correlation",
New column ("Symbol", character, set values (m)),
New column ("Spearman Rho", numeric, set values (m1)),
New column ("Spearman p", numeric, set values (m2)),
New column ("Kendall Tau", numeric, set values (m3)),
New column ("Kendal p", numeric, set values (m4)),
);大きなテーブルでのみJMPスクリプトエラー:配列の最大長?これを試して:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
Column(dt_out, 1)[r] = Column(dt, i) << get name;
For(c = 2, c <= 5, c++,
Column(dt_out, c)[r] = (mob[Number Col Box(c - 1)] << get)[1];
);
mv << close window;
r++;
);
dt_out << show window(1);大きなテーブルでのみJMPスクリプトエラー:配列の最大長?私の問題に対する優雅な解決策をありがとう。
データテーブルと固定変数を置き換えた後にデータでテストしたところ、エラーメッセージ(デバッガ)が返されました。行に無効な引数があります。
dt_out<SPAN class="token punctuation">[</SPAN>r<SPAN class="token punctuation">,</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">=</SPAN> <SPAN class="token function">Column Name</SPAN><SPAN class="token punctuation">(</SPAN>i<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
JMP 11.1と互換性がないこのコマンドまたは構文を推測します。最もよい回避策は何でしょうか。
大きなテーブルでのみJMPスクリプトエラー:配列の最大長?何が起こっているのかわからない。大きなリスト/行列内のすべてのデータを収集するのではなく、出力テーブルを段階的に移入するとうまくいく場合があります。
例(JMP 13):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
m ||= mob[Number Col Box(1)] << get as matrix;
m ||= mob[Number Col Box(2)] << get as matrix;
m ||= mob[Number Col Box(3)] << get as matrix;
m ||= mob[Number Col Box(4)] << get as matrix;
mv << close window;
dt_out[r, 1] = Column Name(i);
dt_out[r, 2 :: 5] = m;
r++;
);
dt_out << show window(1);
大きなテーブルでのみJMPスクリプトエラー:配列の最大長?詳細を追加します。ほとんどのJMPプラットフォーム、配布、パーティションなど)は処理中に複数のコアを使用します。 JSLコードはシングルプロセッサですが、Multivarateプラットフォームは手に入れることができるすべてのプロセッサを使用します。
大きなテーブルでのみJMPスクリプトエラー:配列の最大長?こんにちは。
ありがとう。
他のアプリケーションがバックグラウンドで実行されていない状態で同じスクリプトを実行しようとしましたが、うまくいきました。タスクマネージャ(Windows 10)によると、2 GBのRAMが空いているにもかかわらず、何らかのメモリオーバーフローが発生したようです。
大きなテーブルでのみJMPスクリプトエラー:配列の最大長? @sornasst 、
これがどの程度役立つかはわかりませんが、システムRAMの詳細をここで共有できますか。私はJMPがマルチコアで動くとは思わない、それでそれがシングルコアで動いていると仮定して、あなたはRAMこれをサポートすることができるか?