R’da ilk ‘for’ döngüsü nasıl yazılır?

Bu eğitimde, R’da temel bir for döngüsü nasıl yazabileceğinize bir göz atacağız. Yeni başlayanlara yönelik olarak hazırlanmıştır ve henüz R dilinin temel sözdizimine aşina değilseniz, önce bu R eğitimine bir göz atmanızı öneririz.

Kavramsal olarak, bir döngü belirli koşullar altında bir dizi talimatı tekrarlamanın bir yoludur. Kodunuzun tekrarlanması gereken kısımlarını otomatikleştirmenizi sağlar. Kulağa garip geliyor değil mi? Endişelenmeyin, aşağıda bazı örneklerle çalışmaya başladığımızda daha anlaşılır hale gelecektir.

R’da döngüler yazmaya başlamadan önce bilmeniz gereken önemli bir şey var. İnternette gezinirken sık sık R’daki döngülerden kaçınmak gerektiğini okuyacaksınız. Neden? Çünkü R vektörleşmeyi destekliyor. Basitçe söylemek gerekirse, bu çok daha hızlı hesaplamalar yapılmasını sağlar. Örneğin, döngüleri kullanan çözümler, lapply ve sapply gibi apply fonksiyonlarını kullanan vektörize çözümlerden daha az verimlidir. İkincisini kullanmak genellikle daha iyidir. Bununla birlikte, R’a yeni başlayanlar için, döngülerin temel anlayışını ve bunları nasıl yazılacağını bilmek faydalı olacaktır. R’de vektörizasyon kavramları hakkında daha fazla bilgi edinmek istiyorsanız, bu faydalı bir eğitimdir.

R’de basit bir ‘for’ döngüsü yazma

Bir döngünün kavramsal anlamına geri dönelim. Aşağıdaki formun birkaç çıktısını almak istediğinizi varsayalım: Burada yıl [year] ile ifade edilir. Bu yıl [year] 2010, 2011’ den 2015’ e kadar devam eder. Aşağıdaki adımları takip edebilirsiniz;

print(paste ("Bu yıl ", 2010))
"Bu yıl 2010"
print(paste ("Bu yıl ", 2011))
"Bu yıl 2011"
print(paste ("Bu yıl ", 2012))
"Bu yıl 2012"
print(paste ("Bu yıl ", 2013))
"Bu yıl 2013"
print(paste ("Bu yıl ", 2014))
"Bu yıl 2014"
print(paste ("Bu yıl ", 2015))
"Bu yıl 2015"

Bu işlemi yapmak yani aynı kodu sürekli tekrarlamak oldukça uğraştırıcı ve sıkıcıdır. Bu, her programlama dilinde bilinen “KTE” ilkesine uygun değildir: Ne pahasına oluşa olsun Kendinizi Tekrar Etmeyin. Bu durumda, R’de bir for döngüsü kullanarak tekrarlanan kısmı otomatikleştirebilirsiniz:

for (year in c(2010,2011,2012,2013,2014,2015)){
  print(paste("Bu yıl ", year))
}
"Bu yıl 2010"
"Bu yıl 2011"
"Bu yıl 2012"
"Bu yıl 2013"
"Bu yıl 2014"
"Bu yıl 2015"

For döngüsünde neler olup bittiğini anlamanın en iyi yolu onu aşağıdaki gibi okumaktır: “For ile dizideki her yılı year c(2010,2011,2012,2013,2014,2015) şu şekilde çalıştırırsınız. print(paste("Bu yıl", year))”. For döngüsü, vektörde her yıl için kod yığınını çalıştırdığında döngü durur ve döngü bloğundan sonraki ilk talimata gider.

Bunu nasıl yaptığımızı gördünüz mü? For döngüsü kullanarak, kod yığınınızı yalnızca bir kez yazmanız gerekir (altı kez yerine). For döngüsü daha sonra ifadeyi sağlanan her bir değer (sağladığımız farklı yıllar) için bir kez çalıştırır ve değişkeni ( year bu örnekte) bu değere ayarlar. Kodu daha da basitleştirebilirsiniz: c(2010,2011,2012,2013,2014,2015)yerine 2010:2015; yazmak aynı diziyi oluşturur.

for (year in 2010:2015){
  print(paste("Bu yıl", year))
}
"Bu yıl 2010"
"Bu yıl 2011"
"Bu yıl 2012"
"Bu yıl 2013"
"Bu yıl 2014"
"Bu yıl 2015"

R’deki for döngüsüne son bir not olarak: bu durumda year değişkeni kullandık ama aslında burada herhangi bir değişken kullanılabilir. Örneğin i, dizin anlamına gelen döngüler için yaygın olarak kullanılan bir değişken kullanmış olabilirsiniz:

for (i in 2010:2015){
  print(paste("Bu yıl", i))
}
"Bu yıl 2010"
"Bu yıl 2011"
"Bu yıl 2012"
"Bu yıl 2013"
"Bu yıl 2014"
"Bu yıl 2015"

Bu aynı çıktıyı üretir. Böylece değişkeni istediğiniz gibi adlandırabilirsiniz, ancak anlamlı adlar kullanıyorsanız bu daha anlaşılır olacaktır.

Next’i kullanmak

Daha matematiksel bir örneğe bakalım. 1 ile 10 arasındaki tüm düz olmayan sayıları yazdırmanız gerektiğini, ancak çift sayıların yazdırılmaması gerektiğini varsayalım. Bu durumda, döngünüz şöyle görünür:

for (i in 1:10) {
  if (!i %% 2){
    next
  }
    print(i)
}
1
3
5
7
9

i 1 ile 10 arasındaysa döngüye dahil olur, değilse döngü durur. Döngüye girersek, i değerinin düzensiz olup olmadığını kontrol ederiz. i değerinin 2’ye bölündüğünde sıfır kalanı varsa (bu yüzden %% modül’ ünü kullanıyoruz), yazdırma işlevini yürütür ve geri döngüye gireriz. Kalanın sıfır olmaması durumunda, if ifadesi TRUE olarak değerlendirilir ve koşullu girilir. Burada 1:10 koşulunda i’ye geri dönmeye neden olur.(print(i))

Kapanış notu

Bu kısa yazımızda, R’deki for döngüsü ile tanıştınız. R’de genel olarak döngülerden kaçınılması gerekir. Bu yaklaşım R’daki temel prensipleri anlamanıza yardımcı olur ve bir döngü çözümünü prototiplendirirken kodlamayı ve okumayı kolaylaştırır. Döngüler hakkında daha fazla bilgi edinmek isterseniz, her zaman bu R eğitimini kontrol edebilirsiniz.

Kaynak: For loop in R – a step-by-step tutorial | R-bloggers (r-bloggers.com)