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] );
);
我不斷收到以下錯誤
無法在「資料表」的存取或評估中找到資料表,資料表/*###*/( OldNames[i] )
但是,當我評估資料表(OldNames[1])時,沒有錯誤!
自動化和腳本編寫資料存取大規模客製化回覆:For 循環中列表中的資料表評估非常感謝。這是一個表名稱和一個表是私有表的問題。
回覆:For 循環中列表中的資料表評估@用戶8421 ,
你運行成功了嗎@jthi的劇本?如果是的話,那麼我懷疑:
- 一張或多張桌子已關閉
- 一張或多張桌子是私有的
- 錯誤的舊名字。
下面稍微修改一下@jthi的腳本。 我將第三個表設為私有,並將 show 語句新增到 For 迴圈中。
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() 將私有表設為最新。
這讓我認為私有表可能不具有相同的功能,可能沒有將名稱儲存在記憶體中,因為它不會被計算在內。
祝你好運!
回覆:For 循環中列表中的資料表評估抱歉,我意識到在簡化時我確實錯過了腳本的某些部分。
NNames = NItems(NewNames);
For 迴圈中的第一個參數 i=1。
即使在我的腳本中正確定義了這兩個值,我仍然收到相同的錯誤訊息
回覆: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])
);回覆:For 循環中列表中的資料表評估你好,
我相應地更改了 For 迴圈的前兩個參數。現在應該可以工作了:
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])
);