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