برای ساده کردن محاسبات پیچیده و سایر عملیات های تکراری، بر حلقه for مسلط شوید.
حلقه ها یک ساختار اساسی در برنامه نویسی هستند که یک بلوک کد را می گیرند و آن را به طور مکرر اجرا می کنند. حلقههای For یکی از انواع حلقههایی هستند که تقریباً همه زبانها حاوی آن هستند. حلقه های R بخشی جدایی ناپذیر از تجزیه و تحلیل داده ها هستند.
آنها اهداف مختلفی را انجام می دهند، از قالب بندی خروجی تا اجرای محاسبات روی مجموعه داده های بزرگ. استفاده از حلقههای for در R انجام تجزیه و تحلیل دادهها را آسانتر میکند.
R’s Basic for Loop
تابع حلقه for زبان R مشابه استاندارد حلقه های موجود در Go و بسیاری از زبان های برنامه نویسی دیگر است. با توجه به یک نقطه شروع، کد موجود در آن را چند بار اجرا می کند.
یک شمارنده تکراری را که حلقه در حال حاضر در آن است نگه می دارد و می توانید از بلوک کد مرتبط به آن دسترسی داشته باشید. حلقه ها می توانند برای تعداد ثابتی از تکرارها یا برای طول کل یک آرایه، بردار یا لیست اجرا شوند.
حلقه های تکرار ثابت
حلقه های تکرار ثابت در R شکل زیر را دارند:
for (x in 1:10) {
print(x)
}
x در حلقه متغیری است که تکرار حلقه را ذخیره می کند.
بعد از کلمه کلیدی “in” نقطه شروع و پایان حلقه قرار دارد. حلقه تکرار کننده خود را از شماره اول شروع می کند.
پس از هر بار اجرای کد در حلقه، بررسی می کند که آیا تکرار کننده با عدد بعد از دو نقطه برابر است یا خیر.
اگر اینطور باشد، اجرای کد پس از حلقه ادامه خواهد یافت. اگر اینطور نباشد، تکرار کننده 1 افزایش می یابد و بلوک کد موجود در براکت ها دوباره اجرا می شود.
برای حلقهها روی آرایهها، فهرستها و بردارها
درست مانند حلقه زدن از طریق فرهنگ لغت در پایتون، می توانید با استفاده از حلقه for روی ساختارهای داده مناسب در R تکرار کنید. میتوانید از هر ساختار دادهای تکرارپذیر بعد از کلمه کلیدی «in»، بهجای نقطه شروع و پایان ثابت استفاده کنید.
حلقه زدن به این روش رفتار کد را تغییر می دهد. در اینجا، حلقه مانند یک حلقه foreach از زبان هایی مانند C# عمل می کند:
employees <- list("Ben", "Jane", "Suzi", "Josh", "Carol")
for (x in employees) {
print(x)
}
اکنون، به جای x نگه داشتن تکرار فعلی حلقه، شیء را از آرایه یا لیستی که حلقه در حال حاضر در آن قرار دارد، نگه می دارد. پس از اتمام هر حلقه، اگر موارد بیشتری در لیست، آرایه یا بردار وجود داشته باشد، x به آیتم بعدی تنظیم می شود. اگر موارد بیشتری وجود نداشته باشد، اجرا با کد بعد از حلقه ادامه خواهد یافت.
تابع اولیه c و برای حلقه ها
علاوه بر ساختارهای داده ای که از قبل پر شده اند، R می تواند یک ساختار جدید را در اعلان حلقه for بنویسد. برای انجام این کار، از تابع c برای ترکیب چند عنصر در یک بردار جدید استفاده کنید.
با استفاده از این روش می توانید مثال بالا را ساده کنید:
for (x in c("Ben", "Jane", "Suzi", "Josh", "Carol")) {
print(x)
}
توجه داشته باشید که خروجی مانند قبل است:
بیانیه های پرش R
دو عبارت به شما امکان می دهد از تکرارهای حلقه رد شوید: break و next. آنها این کار را به روش های مختلف انجام می دهند. شما باید مطمئن شوید که تفاوت بین این دو را می دانید.
کلید واژه شکست
هنگامی که یک حلقه در داخل خود با دستور break مواجه می شود، بلافاصله حلقه را می بندد. از آنجایی که برنامه پس از زدن کلمه کلیدی break از حلقه خارج می شود، دیگر هیچ کدام از کدهای باقی مانده را اجرا نمی کند:
days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
"Sunday")
for (x in days) {
if (x == "Saturday") {
break
}
print(x)
}
حلقه بالا همه روزهای هفته را چاپ می کند، اما هیچ یک از روزهای آخر هفته را چاپ نمی کند.
کلمه کلیدی بعدی
کلمه کلیدی بعدی نیز یک تکرار را رد می کند، اما برخلاف break، next حلقه را بلافاصله نمی بندد. حلقه باز باقی مانده به این معنی است که هر کد اضافی در حلقه فعلی اجرا نمی شود، اما تکرار بعدی طبق برنامه ریزی شده ادامه می یابد:
days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
"Sunday")
for (x in days) {
if (x == "Saturday") {
next
}
print(x)
}
این حلقه هر روز هفته و یکشنبه خروجی خواهد داشت، اما شنبه چاپ نمی شود.
مثال برای حلقه ها در R
موقعیتهای بسیار متنوعی وجود دارد که در آن حلقههای for در R مفید هستند. آنها میتوانند روشی عالی برای انجام محاسبات تکراری باشند، مانند اضافه کردن اعداد برای به دست آوردن مجموع:
orders <- list(23.4, 699.8, 1042.0)
total <- 0.0
for (order in orders) {
total <- order + total
}
cat("the total is $", total, "\n")
این مثال یک کل سفارش از هر سفارش جداگانه در یک لیست را به کل کل اضافه می کند.
از طرف دیگر، یک حلقه for می تواند به شما کمک کند تا به سرعت و به آسانی مقادیر زیادی از داده های با فرمت مناسب را خروجی کنید:
day_totals <- c(567.82, 364.72, 762.81, 354.99, 622.87)
for (day in 1:length(day_totals)) {
cat("Day #", day, ": $", day_totals[day],"\n")
day <- day + 1
}
می توانید از حلقه for برای چاپ هر روز هفته و کل فروش آن روز خاص استفاده کنید.
می توانید از یک حلقه for برای محاسبه نتایج استفاده کنید و آنها را برای کدنویسی خارج از حلقه for در دسترس قرار دهید تا اطلاعات مختلفی به دست آورید:
test_scores <- c(67, 89, 72, 44)
score_total <- 0
num_tests <- 0
for (score in test_scores) {
score_total <- score_total + score
num_tests <- num_tests + 1
}
average_score <- score_total / num_tests
print(average_score)
حلقه بالا میانگین نمرات دانش آموزان در یک آزمون را محاسبه می کند.
هر آنچه که باید در مورد R’s for Loops بدانید
یادگیری نحوه اجرای مجموعه ای از حلقه ها یا تکرار بر روی یک مجموعه داده بدون طول ثابت ضروری است.
چه نیاز به انجام محاسبات مکرر بر روی یک آرایه داشته باشید، هر آیتم را در یک لیست چاپ کنید، یا دسته بزرگی از داده ها را به شکل قابل خواندن نشان دهید، حلقه R’s for می تواند کمک کند.
درک اصول اساسی پشت حلقه ها مهارت ارزشمندی است که در زرادخانه خود دارید و تسلط بر آن می تواند به شما در نوشتن کدهای ساده و خوانا کمک کند.