ループを作成する次のスクリプトを使用して、行番号を持つ列を複数のデータ テーブルに追加したいと考えています。
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] );
Re: ループを作るどうもありがとうジェフ。 それは最高です。
時間を見つけて、スクリプト ガイドを詳しく調べなければなりません。 それは私を助けるでしょう。Re: ループを作るいくつかの問題があります。
あなたは混乱しましたdirpathとすべてのファイルコードでそれらを誤って使用しました。 結果としてディレクトリを選択() 、 dirpath 、ユーザーが選択したディレクトリへのパスである文字列になります。 ファイルのリストがあるかのように、以下の For() ループのインデックス作成で使用しようとしました。
結果としてディレクトリ内のファイル() 、すべてのファイル、ディレクトリ内のファイルのリストになります。 それがあなたがループするべきものです。
あなたがする必要があります開ける()新しい列を追加する前に、データ テーブル。
以来、すべてのファイルリストはファイル名のみです。ディレクトリを連結する必要があります。 dirpath 、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() ) );
)
);
チェックアウト始めましょうのセクションデータ テーブルの章スクリプトガイドデータ テーブルの操作の概要については、 を参照してください。
Re: ループを作るスクリプトのコピー中にメッセージにエラーが発生しましたが、正しいバージョンで作業しましたが、デバッグ オプションでエラー メッセージが表示されます。
意外な「用」。 おそらく ; がありません。また 。
Re: ループを作るループに「ディスパス」があります。「dirpath」に変更します
Re: ループを作るどうやら。 まだ正しくありません。 「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>
Re: ループを作るディレクトリを選択し、そのディレクトリ内のすべてのファイルを一覧表示するコマンドがあります。
ファイルが JMP ファイルであるかどうかを確認することをお勧めします (たとえば、ファイルの末尾を確認するなど)。
dirpath = Pick Directory();
allfiles = Files in Directory(dirpath);
allfiles
Re: ループを作るY A!それはうまくいきます!
その後スクリプトを実行するために、スクリプトの開始時に、フォルダ内にあるすべてのデータ テーブルを開くように要求することはできますか? 「listoftables」で各ファイルのタイトルを次々に示す必要がありますか? それにはかなりの時間がかかります…どのように進めればよいでしょうか?
前もって感謝します
Re: ループを作る次のスクリプトは私にとってはうまくいきます。 そうでない場合は、ログの内容 (メイン メニュー => ウィンドウ => ログ) と使用している 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>