多数のグラフを作成し、各グラフの回帰近似値を決定し、すべての回帰係数をテーブルに保存するスクリプトを作成しています。スクリプトは必要なアクションを実行してくれるのですが、評価する列数が増えると突然停止してしまいます。スクリプトは、Forループ内で作成されたプロットと生成されたパネルを、ループ内で閉じようとしてもバックグラウンドで保持しているようです(プロットをジャーナル(PDFエクスポート用)に送信し、回帰係数を抽出した後は、個々のグラフや表のボックスデータは不要です)。
デバッガを使ってスクリプトをステップ実行すると、スクリプトは最後まで実行され、個々のウィンドウは表示されません。しかし、デバッガを停止すると(赤い四角)、forループ内の個々のウィンドウがすべて作成されます。スクリプトは600列以上を反復処理し、それに対応する数のウィンドウがバックグラウンドで作成され(非表示に設定)、時間の経過とともにjmpが停止してしまいます。
スクリプトを使用してデータセットを反復処理し、分析を実行したり、多くのグラフを生成したりする場合、生成される「中間」ウィンドウやプロットなどを閉じて、生成されるメモリの負荷を最小限に抑える最適な方法は何ですか?
以下は、列を反復処理するスクリプトの一部です。
For( i = 7, i <=ncols, i++,
biv = dt << Bivariate(
Y(Column(colList[i]) ),
X( :Temperature ),
Fit Line( {Line Color( "Medium Dark Red" )} ), invisible);
rbiv = biv << Report;
biv << Close;
rbiv[Frame Box( 1 )] << Frame Size( 550, 400 );
rbiv << Page Break;
rbiv << Journal;
dtx= Report( biv )["Parameter Estimates"][Table Box( 1 )] << make combined data table;
// dty= Report( biv )["Lack Of Fit"][Table Box( 1 )] << make combined data table;
dtSlope << Concatenate(dtx ,"Append to first table");
// dtFit << Concatenate(dty ,dtSlope, "Append to first table");
// Close(dty, NoSave);
Close(dtx, NoSave);
);