リストからの For ループでのデータ テーブルの評価For ループを使用してデータ テーブルの名前を変更するスクリプトでエラーが発生し続けます。
これが私のスクリプトの簡略版です
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For( i, i <= NNames, i++,
dt = Data Table( OldNames[i] );
dt << Set Name( NewNames[i] );
);
次のエラーが発生し続けます
'Data Table' のアクセスまたは評価でデータ テーブルが見つかりません。 Data Table/*###*/( OldNames[i] )
ただし、Data Table(OldNames[1]) を評価すると、エラーは発生しません。
自動化とスクリプト作成データアクセスマスカスタマイゼーションRe: For ループでのデータテーブルのリストからの評価本当にありがとう。これは、テーブル名の 1 つとプライベート テーブルであるテーブルの 1 つに関する問題でした。
Re: For ループでのデータテーブルのリストからの評価@user8421 、
無事に実行できましたか@jthiの脚本?「はい」の場合、次のような疑いがあります。
- 1 つ以上のテーブルが閉じられています
- 1 つ以上のテーブルがプライベートです
- 間違った古い名前。
以下は少し修正したものです@jthiさんのスクリプト。 3 番目のテーブルをプライベートにし、For ループに show ステートメントを追加します。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp", "Private");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
show(i, OldNames[i], NewNames[i]);
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i]);
);
ログ出力は次のとおりです
/*:
i = 1;
OldNames[i] = "Big Class";
NewNames[i] = "New Name 1";
i = 2;
OldNames[i] = "Failures3Delimited";
NewNames[i] = "New Name 2";
i = 3;
OldNames[i] = "Semiconductor Capability";
NewNames[i] = "New Name 3";
Cannot locate data table in access or evaluation of 'Data Table' , Data Table/*###*/(OldNames[i])
at line 11 in Script.jsl
JMP スクリプト ガイドには、プライベート テーブルについて次のように記載されています。
- N Table() が開いているデータ テーブルの数を返す場合、プライベート テーブルはカウントされません。
- プライベート テーブルを Current Data Table() で最新にすることはできません。
このことから、プライベート テーブルは同じ機能を持たず、カウントされないためメモリに名前が保存されない可能性があると考えました。
幸運を!
Re: For ループでのデータテーブルのリストからの評価申し訳ありませんが、簡略化しているときにスクリプトの一部を見逃していたことに気づきました。
NNames = NItems(NewNames);
For ループの最初の引数は i=1 です。
スクリプトで両方が正しく定義されている場合でも、同じエラーメッセージが表示されます
Re: For ループでのデータテーブルのリストからの評価少なくとも i (i = 1) の定義が欠けているようです。また、NNames が何なのかもわかりません。
これは実際に動作する例です。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);Re: For ループでのデータテーブルのリストからの評価こんにちは、
それに応じて、For ループの最初の 2 つの引数を変更しました。これで動作するはずです。
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(
i=1,
i <= NItems(NewNames),
i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);