在 for 循环中设置变量名你好,
我喜欢在 for 循环中设置变量名称,例如 name1、name2...,排列如下:
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
等等。
我做了一个下面的脚本并得到了一些错误:
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
我感谢您的帮助。 谢谢。
Re: 在 for 循环中设置变量名谢谢杰夫。 我尝试了你的最后一个脚本并将文件和 listexcelsheet 更改为名称并且完美运行。 再次感谢您的支持。
Re: 在 for 循环中设置变量名你到底在挣扎什么? 您是否收到了您不理解的错误? 我已经展示了上面的循环,它们对你有用。
我之前建议您使用列表而不是尝试创建索引 JSL 变量名。 我在您在此处发布的代码中没有看到任何表明列表不适合您的内容。 我强烈建议您改用列表。
flow = {"one", "two", "three", "four", "five"};
names = {};
files = {};
For( i = 1, i <= N Items( flow ), i++,
names[i] = "A_" || flow( i );
files[i] = Open( "$Documents/JMP/A_" || Flow[i] || ".jmp" );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", files, listexcelsheet );
);Re: 在 for 循环中设置变量名非常感谢杰夫。 拿到第一部分后,我需要更多帮助。 下面是运行良好的脚本:
If( Nitems == 5,
name1 = ntable;
name2 = "A" || "_" || Flow[1];
name3 = "A" || "_" || Flow[2];
name4 = "A" || "_" || Flow[3];
name5 = "A" || "_" || Flow[4];
name6 = "A" || "_" || Flow[5];
name1jmp = "$Documents/JMP/" || "A" || "_" || Flow[1] || ".jmp";
name2jmp = "$Documents/JMP/" || "A" || "_" || Flow[2] || ".jmp";
name3jmp = "$Documents/JMP/" || "A" || "_" || Flow[3] || ".jmp";
name4jmp = "$Documents/JMP/" || "A" || "_" || Flow[4] || ".jmp";
name5jmp = "$Documents/JMP/" || "A" || "_" || Flow[5] || ".jmp";
file1 = Open( ntablejmp );
file2 = Open( name1jmp );
file3 = Open( name2jmp );
file4 = Open( name3jmp );
file5 = Open( name4jmp );
file6 = Open( name5jmp );
listx = Eval List( {name1, name2, name3, name4, name5, name6} );
listexcelsheet = Eval List( {name1, name2, name3, name4, name5, name6} );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", listx, listexcelsheet );
);
我正在尝试创建一个 for 循环,以便它适用于任何 Nitems。 我正在使用 MAC 机器,这就是为什么要这样做的原因。 感谢您一直以来的支持。
Re: 在 for 循环中设置变量名技术完全一样。 您正在构建一个字符串,您将把它解析为一个表达式并对其求值。
可能会让您感到困惑的一件事是下面的 \!"。 因为你需要你的字符串包含一个 " 你需要使用 \! 来转义它。
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
expr_string = "name" || Char( i + 1 ) || "jmp = \!"$Documents/JMP/" || "A_" || Flow[i] || ".jmp\!"";
Show( expr_string );
Eval( Parse( expr_string ) );
);Re: 在 for 循环中设置变量名谢谢杰夫。 两者都很好,但我喜欢第一个,因为我的代码基于该定义。 除了 name1,我还喜欢定义
姓名 1jmp = “$文档/JMP/” || “一种” || “_” ||流[i] || “.jmp” ;
你能帮我把它添加到以前的脚本中吗? 谢谢
Re: 在 for 循环中设置变量名@txnelson对您的问题的解释与我不同。
我认为您想创建一系列 JSL 变量,并将索引号作为变量名称的一部分。
您可以这样做,但在尝试 Parse() 之前,您需要将整个表达式构建为字符串。
像这样:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
但是,我不确定您为什么要这样做而不是使用内置索引的列表或关联数组。
names = {};
names[1] = "A_one";
For( i = 1, i <= N Items( flow ), i++,
names[i + 1] = "A_" || flow[i]
);
Show( names[1], names[2], names[3], names[4] );
Re: 在 for 循环中设置变量名您没有使用正确的语法来重命名列。这是直接取自的示例
帮助==>脚本索引==>列脚本
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );