使用不同的输入多次运行脚本。你好
我编写了一个脚本,它获取一些数据,进行一些操作(如排序、排序、子集等),最后绘制数据。
需要使用不同的输入多次运行此脚本。我该怎么做?
这就是我尝试过的 -
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]);
);
这是日志输出:
它可能会帮助您编写一个函数,您可以在循环内每次使用不同的参数值进行评估。这将允许您在循环之外开发和测试函数,以便更容易排除故障。