創建一個循環我想使用以下腳本將帶有行號的列添加到多個數據表中:
dt<<NEW column=""></NEW>
我仍然是腳本編寫的新手。 如何自動處理所有數據表? 我有這行信息可以工作,但似乎定位“數據表”有問題......
Names Default To Here( 1 );
// Create a list of data tables to be updated
dtList = {"Table1", "Table2", etc...};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( dtList ), i++,
dt = Data Table( dtList[i] );
回复:創建一個循環非常感謝杰夫。 那很完美。
我絕對必須抽出時間仔細閱讀腳本指南。 它會幫助我。回复:創建一個循環你有很多問題。
你糊塗了路徑和全部文件並在您的代碼中錯誤地使用了它們。 的結果選擇目錄() ,路徑, 將是一個字符串,它是用戶選擇的目錄的路徑。 您已嘗試在下面的 For() 循環的索引中使用它,就好像它具有文件列表一樣。
的結果目錄中的文件() ,全部文件, 將是目錄中的文件列表。 這就是你應該循環的。
你需要打開()添加新列之前的數據表。
自從全部文件列表只是文件名,你需要連接目錄,路徑,在 Open() 的參數中。
最後,您應該確保您只是通過檢查文件的擴展名來嘗試打開 JMP 數據表。 在下面的示例代碼中,我使用單詞()功能。 -1 參數要求字符串中的最後一個單詞。
dirpath = Pick Directory();
allfiles = Files In Directory( dirpath );
// Loop through each of the files and add the column
Show( allfiles );
For( i = 1, i <= N Items( allfiles ), i++,
If( Word( -1, allfiles[i], "." ) == "jmp",
dt = Open( dirpath || allfiles[i] );
dt << New Column( "Sequence", numeric, formula( Row() ) );
)
);
查看開始的部分數據表的章節腳本指南有關使用數據表的介紹。
回复:創建一個循環我在復制腳本時在消息中出錯,但我使用了正確的版本,但我仍然收到帶有調試選項的錯誤消息:
意想不到的“為了”。 也許有一個失踪;或者 。
回复:創建一個循環你的循環中有“dispath”。將其更改為“dirpath”
回复:創建一個循環顯然。 現在還不對。 “For”行有問題嗎?
<SPAN class="token comment">dirpath = Pick Directory();<BR />allfiles = Files in Directory (dirpath);<BR />all files<BR /><BR />// Loop through each of the files and add the column</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> dirpath <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> dispath<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"Sequence"</SPAN><SPAN class="token punctuation">,</SPAN> numeric<SPAN class="token punctuation">,</SPAN> formula<SPAN class="token punctuation">(</SPAN><SPAN class="token function">Row</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
回复:創建一個循環有一些命令可以選擇目錄並列出該目錄中的所有文件。
我建議檢查每個文件是否為 JMP 文件(例如通過檢查文件結尾)。
dirpath = Pick Directory();
allfiles = Files in Directory(dirpath);
allfiles
回复:創建一個循環呀!它運作良好!
是否可以請求 - 在腳本開始時 - 打開文件夾中的所有數據表以便此後運行腳本? 每個文件的標題是否應該在“listoftables”中一個接一個地指出? 這需要很多時間……你建議我如何進行?
提前致謝
回复:創建一個循環以下腳本對我有用。 如果它不適合您,發布您的日誌內容(主菜單 => 窗口 => 日誌)和您使用的 JMP 版本會很有幫助。
listoftables = {"Untitled 5", "Untitled 4", "Untitled 3"};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( listoftables ), i++,
dt = Data Table( listoftables[i] );
dt<<NEW column=""></NEW>