برای مشاهده یافته ها از کلید Enter و برای خروج از کلید Esc استفاده کنید.

عبارت های کنترلی : بخش دوم

پس از بررسی ساختار کنترلی if…else و حلقه های for، در این بخش به حلقه while در زبان R می پردازیم. عملکرد حلقه while به این صورت است که در ابتدا برقرار بودن شرط را بررسی می کند و در صورت صحت آن، اجازه انجام یک تکرار (iteration) را می دهد. پس از اجرای دستور و عبارت موردنظر، مجددا شرط بررسی می شود و این روال تا زمانی که شرط برقرار نشود (نادرست شود) ادامه پیدا می کند. به عنوان یک الگو، استفاده از یک شمارنده برای اینکه از تعداد تکرارها مطلع باشیم، روشی مرسوم است چرا که اصولا حلقه for برای مواردی استفاده می شود که که تعداد تکرارها از پیش معلوم است ولی حلقه while در سناریوهایی مورد استفاده قرار می گیرد که اطلاعی از پایان تکرارها نداریم و این شرایط را تنها با استفاده از یک یا چند شرط تعیین می کنیم، مانند بررسی توییت های مرتبط با جام باشگاه های آسیا که طی هفته گذشته منتشر شده اند و شامل یک عبارت مشخص هستند.

counter <- 1

while(counter <= 10) {

  print(paste ("counter is", counter))

  counter <- counter + 1

}

#[1] "counter is 1"
#[1] "counter is 2"
#[1] "counter is 3"
#[1] "counter is 4"
#[1] "counter is 5"
#[1] "counter is 6"
#[1] "counter is 7"
#[1] "counter is 8"
#[1] "counter is 9"
#[1] "counter is 10"

##############

cnt <- 1

while (cnt <= 6) {

   if (cnt < 6) {

    print("No Success")

   } else {

    print("Successful!")

   }

cnt <- cnt + 1

}

#[1] "No Success"
#[1] "No Success"
#[1] "No Success"
#[1] "No Success"
#[1] "No Success"
#[1] "Successful!"

دستور break در حلقه ها زمانی مورد استفاده قرار می گیرد که براساس یک شرایط خاص قصد پایان حلقه را داشته باشیم بدون توجه به شرط اصلی حلقه یا تعداد تکرارها. معمولا این دستور همراه با یک عبارت if استفاده می شود.

series <- 1:4

for (i in series) {

   if (i == 3){

    break   

    }

print(i)

}

#[1] 1

#[1] 2

البته نکات دیگری هم درباره ساختارهای کنترلی در زیان R وجود دارد ولی از آنجاییکه در این موارد تفاوت خاصی میان R و سایر زبان های برنامه نویسی نیست، از پرداختن به آن ها خودداری می کنیم. در واقع این بخش، پایان مباحث اولیه زبان R بود و از این پس به سراغ مباحث پیشرفته تر خواهیم رفت و هر جایی که لازم باشد به آن دسته از مباحث اولیه که تاکنون بررسی نشده اند و در واقع نیازی به بررسی آن ها نبوده است، اشاره خواهیم کرد.