在 R 中退出 for 迴圈
for
迴圈在 R 中有兩個特點。
- 它迭代物件的元素。
- 它不返回任何東西。
要在完成與物件中元素數量一樣多的迭代之前終止 for
迴圈,我們只有一個選擇:break
關鍵字。
R 中的 for
迴圈示例
我們首先建立一個向量,因為 for
迴圈遍歷物件的元素。for
塊中的變數儲存向量的當前元素的值。
for
迴圈的迭代次數與向量中的元素一樣多。
示例程式碼:
# Create a vector.
myVec = c("First Name", "Last Name", "Address", "Phone", "Country")
# The for loop.
# Here, elem is a variable that holds the current element of the vector myVec.
for(elem in myVec)
{
print(elem)
}
輸出:
[1] "First Name"
[1] "Last Name"
[1] "Address"
[1] "Phone"
[1] "Country"
R 中的 break
關鍵字
break
關鍵字用於在迴圈執行後立即退出。它通常在滿足條件時使用。
在示例程式碼中,我們將在兩個不同迴圈的不同位置使用 break
關鍵字來顯示迴圈何時終止。
示例程式碼:
# Exit on the third iteration BEFORE printing the updated value of the elem variable.
for(elem in myVec)
{
if(elem == "Address") {break}
print(elem)
}
# Exit on the third iteration AFTER printing the updated value of the elem variable.
for(elem in myVec)
{
print(elem)
if(elem == "Address") {break}
}
輸出:
> # Exit on the third iteration BEFORE printing the updated value of the elem variable.
> for(elem in myVec)
+ {
+ if(elem == "Address") {break}
+ print(elem)
+ }
[1] "First Name"
[1] "Last Name"
>
> # Exit on the third iteration AFTER printing the updated value of the elem variable.
> for(elem in myVec)
+ {
+ print(elem)
+ if(elem == "Address") {break}
+ }
[1] "First Name"
[1] "Last Name"
[1] "Address"
使用 break
終止 R 中的巢狀 for
迴圈
我們可以巢狀 for
迴圈。如果我們的程式碼在巢狀的 for
迴圈中執行 break
關鍵字,它會立即跳出巢狀迴圈。
在執行了 break
的迴圈之後,控制返回到外迴圈的下一行。請參閱示例程式碼的輸出以進行說明。
我們將首先建立第二個向量來幫助說明巢狀 for
迴圈的中斷。我們將在巢狀迴圈的第三次迭代中使用 break
關鍵字,這發生在外迴圈的第二次迭代中。
需要注意的一點是外迴圈的第三次迭代被完全執行。
示例程式碼:
# Create another vector.
myVec2 = c("One", "Two", "Three")
# Break out of the inner loop in the third iteration of the inner loop
# which happens in the second iteration of the outer loop
# Outer for loop.
for(item in myVec2)
{
# Nested for loop.
for(elem in myVec)
{
cat(item, ": ", elem, "\n") # Used in place of print().
if(item == "Two" && elem == "Address")
{break}
}
}
輸出:
One : First Name
One : Last Name
One : Address
One : Phone
One : Country
Two : First Name
Two : Last Name
Two : Address
Three : First Name
Three : Last Name
Three : Address
Three : Phone
Three : Country
我們發現巢狀迴圈中的 break
關鍵字僅在滿足 if
條件時才影響該迴圈的執行。
外迴圈繼續它的迭代。這是因為 break
的條件涉及來自兩個迴圈的變數。
如果我們只使用內迴圈的條件,它將在每次外迴圈迭代時中斷。內迴圈不會在任何外迴圈迭代中完全執行。
示例程式碼:
# Break out of the inner loop in the third iteration of the inner loop
# The break will get executed in EVERY iteration of the outer loop.
# Outer for loop.
for(item in myVec2)
{
# Nested for loop.
for(elem in myVec)
{
cat(item, ": ", elem, "\n") # Used in place of print().
if(elem == "Address")
{break}
}
}
輸出:
One : First Name
One : Last Name
One : Address
Two : First Name
Two : Last Name
Two : Address
Three : First Name
Three : Last Name
Three : Address
我們發現巢狀迴圈中的 break
關鍵字在外迴圈的每次迭代中都被執行,因為每次都滿足 if
條件。
最後,讓我們看看將 break
關鍵字放在外迴圈中的效果。我們將在示例中的巢狀迴圈之後立即放置關鍵字。
if
條件在外部迴圈的第二次迭代中得到滿足,但 break
關鍵字出現在巢狀的 for
迴圈之後。所以巢狀迴圈在外迴圈終止之前被執行。
示例程式碼:
# Outer for loop.
for(item in myVec2)
{
# Nested for loop.
for(elem in myVec)
{
cat(item, ": ", elem, "\n") # Used in place of print().
}
if(item == "Two"){break} # Gets executed at the END of the second iteration of the outer loop.
}
輸出:
One : First Name
One : Last Name
One : Address
One : Phone
One : Country
Two : First Name
Two : Last Name
Two : Address
Two : Phone
Two : Country
在 R 中使用 break
關鍵字
當在 for
迴圈中使用 break
關鍵字時,我們需要使用我們的編碼邏輯來確保兩件事。
break
命令僅在我們想要的條件下執行。- 迴圈的其餘部分按照我們的意願執行。
print()
語句是一個可以幫助我們完成這項任務的工具。我們可以在最內層迴圈或每個迴圈中新增 print()
語句。
檢查輸出將向我們展示執行 break
命令的條件。
關於 R 函式的幫助
有關 R Studio 中 R 函式或關鍵字的幫助,請單擊 幫助 > 搜尋 R 幫助
,然後在搜尋框中鍵入函式名稱或關鍵字(不帶括號)。
或者,在 R 控制檯的命令提示符處鍵入一個問號,後跟函式或關鍵字名稱。例如,?break
。
まとめ
break
關鍵字允許我們終止 R 中的 for
迴圈。它只終止它執行的迴圈。
在迴圈中新增 print()
語句有助於我們確定 break
命令是否在正確的條件下執行。