在 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];
)
)
);
我感謝您的幫助。 謝謝。
回覆:在 for 迴圈中設定變數名稱謝謝傑夫。 我嘗試了你的最後一個腳本,並將文件和 listexcelsheet 更改為名稱並且工作完美。 再次感謝大家的支持。
回覆:在 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 );
);回覆:在 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 機器,這就是為什麼這樣做的原因。 感謝您一直以來的支持。
回覆:在 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 ) );
);回覆:在 for 迴圈中設定變數名稱謝謝傑夫。 兩者都工作正常,但我喜歡第一個,因為我的程式碼基於該定義。 除了 name1,我還喜歡定義
名稱1jmp = “$文檔/JMP/” || “A” || “_” ||流[i] || “.jmp” ;
你能幫我如何將其添加到先前的腳本中嗎? 謝謝
回覆:在 for 迴圈中設定變數名@tx尼爾森對你的問題的解釋與我不同。
我認為您想要建立一系列 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] );
回覆:在 for 迴圈中設定變數名稱您沒有使用正確的語法來重新命名列。這是直接取自的範例
幫助==>腳本索引==>列腳本
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );