R語言中使用next或break控制循環的方法

學習過C語言,Java語言或者C#語言的同學們知道,在循環體中可以使用continue或者break語句來控制循環的執行情況:即使用continue語句結束某一次循環而繼續執行下一次循環,而使用break來結束整個循環。在R語言中可以使用next和break能夠達到同樣的效果,即在R中next相當於continue的功能,而R中也是使用break來結束整個循環的。下面就詳細來探討一下next和break的使用方法。

next的用法

next用於循環體中提前結束某一次循環,注意只結束遇到next時的那一次循環,即在循環體中,如果next後面還有其它語句的話,將不會被執行。其機理可以使用下面的圖來說明:

next的使用示意圖

也就是說,遇到next時,將提前結束了本次循環,進而判斷循環條件,如果循環條件滿足的話,還要進入循環體繼續執行。

下面使用一個例子來說明next的具體使用方法。下面的例子是輸出一個向量中的奇數。

輸出向量中的奇數

在這個例子中,使用for循環來循環每個元素值,在循環體中,使用if來判斷這個元素是否能被2整除(餘數為0),如果能被2除盡,說明這個元素el就不是奇數,使用next來結束本次循環,即不執行下面的print(el)語句,但是緊接著在vec中讀取下一個元素,如果該元素不能被2整除,則不會執行next,就會執行print(el),將其輸出來。其在R控制檯的輸出結果如下:

輸出奇數的結果情況

當然,這個題目除了使用for循環外,也可以使用while或repeat來實現,有興趣的讀者,自己可以試一試。

break的用法

break用在循環體中結束整個循環,即循環體中如果遇到了break,則整個循環就結束了,而不是像next那樣,只結束當次循環。其運行機理可以使用下圖來表示:

break的運行示意圖

從圖中可以看出,當在循環體中遇到break時,直接跳出循環體,而執行循環體後面的語句,不再執行循環。下面以一個例子來說明其具體使用方法。

break使用的例子

這個例子是循環找出1000以內能被5整除的數,並將其輸出,如果這樣的數超過了10個,則結束循環。其程序代碼如下圖所示:

找出1000以內能被5整除的10個數

圖中給出了詳細的註釋,這裡對其不再進行解釋,其在R控制檯中的運行結果如下圖所示:

算法的運行結果

同樣,這個算法也可以使用for循環或者repeat循環來實現,感興趣的讀者可以自己親手試一試。

關於next和break的用法就說到這裡,不知道你是否清楚了,如果有什麼問題歡迎給我留言交流。

歡迎您關注本號,本號近期會一直更新R語言方面的文章,內容由淺入深,並且遵循內容的邏輯順序,如果你是R的初學者,你只需要每天抽出幾分鐘閱讀我每天更新的文章,就可以快速步入R的大門,帶你共同體驗R進行數據分析的快樂。同時,本號會提供R的相關資源,歡迎關注。