異なる入力でスクリプトを複数回実行する。やあ
いくつかのデータを取得し、いくつかの操作(並べ替え、順序付け、サブセットなど)を行い、最終的にデータをプロットするスクリプトを作成しました。
このスクリプトを異なる入力で数回実行する必要があります。どうすればよいですか?
これは私が試したものです -
in_list = {};
in_list = Associative array(dtin:input) << get keys //this is to get all inputs into a list
for(i=1,i<NITEMS></NITEMS>
ただし、スクリプトは最初の入力に対してのみ実行されます。
また、各出力を異なるファイル名で保存します。
Re: 異なる入力でスクリプトを複数回実行しています。テーブル名を結合にハードコーディングしないでください。代わりに変数名を使用してください。たとえば、Data Table("Table Namen1") << Join("Table Name2",...) を使用しないで、代わりに dt << Join(dt2,...) を使用します。これを行うと、データ テーブル変数が現在のループ反復の正しいデータ テーブルを常に指すようにすることができます。
また、問題を解決しようとして説明したように、必要がなくなったら、中間データ テーブルを必ず閉じる必要があります。JMP をできる限り整然とした状態に保ちます。
Re: 異なる入力でスクリプトを複数回実行しています。返信いただきありがとうございます。 さらにデバッグした後、問題の根本原因を突き止めました。
問題文:ループの実行中、入力の選択は更新されますが、グラフはすべての入力の選択で同じです。
根本的な原因:スクリプトに結合があります。スクリプトが実行されるたびに、テーブルは接尾辞 1,2 などで保存されます。
ただし、結合ロジックには元のテーブル名があるため、テーブルは更新されません。テーブルが元のテーブル (最初の実行時に作成されたテーブル) と結合されるたびに、出力グラフは同じになります。
解決: Try(close(out_table,no save)) を試しましたが、うまくいきませんでした。
この点で何か助けていただければ幸いです。
Re: 異なる入力でスクリプトを複数回実行しています。あなたは本当にそのようなものを必要としないはずです.より完全なスクリプトを投稿していただける場合は、問題の場所を特定するお手伝いをいたします。Stop() は、スクリプト全体の実行を完全に終了します。Break() は、ループの実行を終了します。 Continue() は、あなたが説明したものとほぼ同じです。現在の繰り返しを中断し、ループの先頭に戻ります。
Re: 異なる入力でスクリプトを複数回実行しています。返信ありがとうございます。
問題を引き起こしている for ループ内の if ステートメントに stop() があると考えました。
continue() に置き換えましたが、問題は解決しません。
現在の反復だけを停止して次の反復を続行できる関数はありますか?
ありがとう
Re: 異なる入力でスクリプトを複数回実行しています。2 行目にセミコロンがありませんが、実際のスクリプトにはセミコロンがあると思います。問題はおそらくループの側にあります (ところで、for ループの 2 番目の引数はおそらく "<" ではなく "<=" にする必要があります。そうしないと、リストの最後の項目を見逃すことになります)。これは、あなたのアプローチを使用した実際のスクリプトの非常に簡単な例です。
まず、いくつかの入力を取得するためのテーブルを作成しました。
次に、このスクリプトを実行します。
dt = Current Data Table();
in_list = Associative Array(dt:input) << get keys;
for(i=1, i<=N Items(in_list), i++,
Print(in_list[i]);
);
ログ出力は次のとおりです。
毎回引数に異なる値を使用してループ内で評価できる関数を作成すると役立つ場合があります。これにより、ループの外で関数を開発およびテストできるため、トラブルシューティングが容易になります。