创建一个循环我想使用以下脚本将包含行号的列添加到多个数据表:
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>