使用不同的輸入多次運行腳本。你好
我編寫了一個腳本,它獲取一些數據,進行一些操作(如排序、排序、子集等),最後繪製數據。
需要使用不同的輸入多次運行此腳本。我該怎麼做?
這就是我嘗試過的 -
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>
但是該腳本僅針對第一個輸入運行。
我也用不同的文件名保存每個輸出。
回复:使用不同的輸入多次運行腳本。不要將表名硬編碼到連接中。請改用變量名。例如,不要使用 Data Table("Table Namen1") << Join("Table Name2",...),而是使用 dt << Join(dt2,...)。如果這樣做,您可以讓數據表變量始終指向當前循環迭代的正確數據表。
正如您在嘗試解決問題時所描述的那樣,一旦不再需要它們,您還應該確保關閉任何中間數據表。盡可能保持 JMP 整潔。
回复:使用不同的輸入多次運行腳本。謝謝回复。 經過進一步調試,我找到了問題的根本原因。
問題陳述:在循環中運行時,輸入選項會更新,但所有輸入選項的圖形都是相同的。
根本原因:我在腳本中有連接。因此,每次腳本運行時,表都以後綴 1,2 保存,依此類推。
但是由於連接邏輯具有原始表名,因此表不會更新。每次表與原始表(首次運行時創建的表)連接時,輸出圖都是相同的。
解決方案:我試過 Try(close(out_table,no save)) 但沒有運氣。
感謝您在這方面的任何幫助。
回复:使用不同的輸入多次運行腳本。你真的不應該需要任何這樣的東西。如果您願意發布更完整的腳本,我可以幫助您確定問題所在。Stop() 完全終止整個腳本的執行。Break() 終止循環的執行。 Continue() 幾乎就是您所描述的;它中斷當前迭代並返回到循環的頂部。
回复:使用不同的輸入多次運行腳本。感謝您的回复。
我認為我在 for 循環內的 if 語句中有一個 stop() 導致問題。
將其替換為 continue(),但這並不能解決問題。
有沒有可以停止當前迭代並繼續下一個迭代的函數?
謝謝
回复:使用不同的輸入多次運行腳本。您在第二行缺少分號,但我假設您的實際腳本中有一個。問題可能在於您的循環(順便說一句,for 循環的第二個參數可能應該是“<=”而不是“<”,否則您將錯過列表中的最後一項)。這是使用您的方法的工作腳本的一個非常簡單的示例:
首先,我製作了一個表格來獲取一些輸入:
然後我運行這個腳本:
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]);
);
這是日誌輸出:
它可能會幫助您編寫一個函數,您可以在循環內每次使用不同的參數值進行評估。這將允許您在循環之外開發和測試函數,以便更容易排除故障。