Programlama Örnekleriyle R While Döngüsü

⚡ Akıllı Özet

R programlama dilinde while döngüsü, koşulu DOĞRU kaldığı sürece bir kod bloğunu tekrarlar. Koşul her geçişten önce test edilir, bu nedenle döngünün gövdesi hiç çalışmayabilir ve içindeki bir şeyin sonunda koşulu YANLIŞ hale getirmesi gerekir.

  • 🔁 Temel Sözdizimi: while (condition) { expression } ifadesi önce koşulu test eder ve yalnızca koşul doğru (TRUE) olarak değerlendirildiği sürece gövdeyi çalıştırır.
  • ⚠️ Fesih Kuralı: Kodun gövdesi içindeki bir ifade koşulu değiştirmelidir, aksi takdirde döngü asla sona ermez.
  • 🔢 Karşı Desen: Döngüden önce bir değişkeni başlatın ve döngü içinde artırın; bu, standart sayma yöntemidir.
  • 🛑 Akış kontrolü: `break` komutu döngüyü hemen sonlandırır ve `next` komutuyla bir sonraki yinelemeye geçer.
  • 🔁 Alternatifi tekrarla: Tekrar eden döngüler koşulsuz olarak çalışır ve tamamen kesme işlemine dayanır; bu da do-while tarzı mantığa uygundur.
  • 📐 Ne Zaman Seçilmeli: Yineleme sayısı önceden bilinmiyorsa `while`, sabitse `for` döngüsünü kullanın.

R'de While Döngüsü

R Programlamada While Döngüsü

A döngü sırasında R'da bir kod bloğu, koşulu DOĞRU kaldığı sürece tekrarlanır. Koşul test edilir. önce Her geçişte, koşul baştan itibaren YANLIŞ ise while döngüsü sıfır kez çalışabilir.

R'de While Döngü Sözdizimi

R programlamada While Döngüsü için sözdizimi şöyledir:

while (condition) {
     Exp	
}

R While Döngüsü Akış Şeması

R While Döngüsü Akış Şeması
R While Döngüsü Akış Şeması

notDöngünün içindeki bir şey, sonunda koşulu YANLIŞ hale getirmelidir. Eğer hiçbir şey bunu yapmazsa, döngü sonsuza kadar çalışır ve R'yi Esc veya Ctrl+C ile kesmeniz gerekir.

R'de while döngüsü, for döngüsü ve repeat döngüsü karşılaştırması

R üç tuvalet sunmaktadır.ping Bu yapılar arasında seçim yapmak, önceden kaç yinelemeye ihtiyacınız olduğunu bilip bilmemenize bağlıdır.

Kriterler süre için tekrar et
Yineleme sayısı Önceden bilinmiyor Önceden biliniyor Önceden bilinmiyor
Durum test edildi. Her geçişten önce Sıra tükendi Asla, ara vermelisiniz.
Minimum çalıştırmalar Sıfır Sıfır Bir
Tipik kullanım Bir eşiğe doğru yakınsama Bir vektör veya liste üzerinde yürümek Do-while tarzı mantık
Sözdizimi while (cond) { } for (i in v) { } tekrarla { … ara }
# repeat always runs at least once
count <- 1
repeat {
    print(count)
    count <- count + 1
    if (count > 5) break
}

Yukarıdaki hisse senedi örneği, while döngüsü için doğal bir örnektir: Fiyatın 45'e düşmesi için kaç rastgele çekilişin gerekeceğini önceden bilemezsiniz.

R'da While Döngüsü: Örnekler

Örnek 1

Mümkün olan en basit olanla başlayın. R programlama Örnek: Bir sayaç oluşturuyorsunuz ve her geçişte ona 1 ekliyorsunuz. Döngünün sona ermesi gerekiyor, bu nedenle koşul, değişken 10'u geçtiğinde R'ye durmasını açıkça söylüyor.

not: Geçerli döngü değerini görmek istiyorsanız, değişkeni print() fonksiyonunun içine sarmanız gerekir.

#Create a variable with value 1
begin <- 1

#Create the loop
while (begin <= 10){

#See which loop we are on
cat('This is loop number', begin, '\n')

#add 1 to the variable begin after each loop
begin <- begin+1
print(begin)
}

Çıktı:

## This is loop number 1[1] 2
## This is loop number 2[1] 3
## This is loop number 3[1] 4
## This is loop number 4[1] 5
## This is loop number 5[1] 6
## This is loop number 6[1] 7
## This is loop number 7[1] 8
## This is loop number 8[1] 9
## This is loop number 9[1] 10
## This is loop number 10[1] 11

Örnek 2

Diyelim ki 50 dolardan bir hisse senedi aldınız. Fiyat 45'e veya altına düşerse, hisseyi açığa satmak istersiniz, aksi takdirde elinizde tutmaya devam edersiniz. Döngünün her geçişi, fiyatı 50 civarında her iki yönde de 10'a kadar rastgele hareket ettirir:

set.seed(123)
# Set variable stock and price
stock <- 50
price <- 50

# Loop variable counts the number of loops 
loop <- 1

# Set the while statement
while (price > 45){

# Create a random price between 40 and 60
price <- stock + sample(-10:10, 1)

# Count the number of loop
loop <- loop + 1

# Print the number of loop
print(loop)
}

Çıktı:

## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
cat('it took',loop,'loop before we short the price. The lowest price is',price)

Çıktı:

## it took 7 loop before we short the price. The lowest price is 40

While döngüsünde break ve next komutlarını nasıl kullanırsınız?

İki anahtar kelime, herhangi bir R döngüsünün normal akışını değiştirir.

  • kırılma döngüden hemen çıkar, atlaping kalan her yineleme.
  • sonraki Yalnızca mevcut yinelemeyi terk eder ve doğrudan bir sonraki koşul testine geçer.
# break: stop as soon as a condition is met
i <- 1
while (i <= 100) {
    if (i * i > 50) {
        cat('First square above 50 is', i * i, '\n')
        break
    }
    i <- i + 1
}

# next: skip the even numbers
i <- 0
while (i < 10) {
    i <- i + 1
    if (i %% 2 == 0) next
    print(i)
}

Bilmeniz gereken bir tuzak. Bir while döngüsünde, next ifadesi koşul testine geri döner. olmadan Bundan sonraki herhangi bir şeyi çalıştırır. Eğer sayacınız gövdenin en altında artırılıyorsa, `next` bu artışı atlar ve döngü sonsuza kadar takılı kalır. Bu yüzden ikinci örnekte artış gerçekleşiyor. önce Bir sonraki ifadeyi, ondan sonrakini değil.

While Döngülerinde Sık Görülen Hatalar ve Sonsuz Döngüler

Hemen hemen her başarısız while döngüsünün dört temel hatası vardır.

  • Sayaç asla güncellenmez. Artırma işlemini unutmak, koşulun kalıcı olarak DOĞRU kalmasına neden olur. İşlemi durdurmak için RStudio'da Esc tuşuna veya terminalde Ctrl+C tuşuna basın.
  • Bu koşul NA değerini döndürür. Testteki herhangi bir değer NA ise, R "TRUE/FALSE gereken yerde eksik değer" hatasıyla durur. Bunu is.na() veya isTRUE() ile kontrol edin.
  • Koşul, birden fazla öğeden oluşmaktadır. R 4.2'den beri, uzunluğu birden büyük olan bir koşul uyarı değil, hata olarak kabul edilir. Bunu any() veya all() içine alın.
  • Kayan noktalı karşılaştırma hiçbir zaman YANLIŞ olmaz. `while (x != 0.3)` sonsuza kadar döngü yapabilir çünkü 0.1 + 0.2 tam olarak 0.3 değildir. Bunun yerine, `abs(x – 0.3) > 1e-8` kullanarak bir toleransla karşılaştırma yapın.
# Safety valve: cap the number of iterations
iter <- 0
while (price > 45 && iter < 1000) {
    price <- stock + sample(-10:10, 1)
    iter <- iter + 1
}

Döngünün çıkış noktası rastgele veya harici verilere bağlıysa, maksimum yineleme sayısını eklemek ucuz bir sigorta görevi görür.

SSS

Bir while döngüsü, ilk çalıştırmadan önce koşulunu test eder, bu nedenle sıfır kez çalışabilir. Bir repeat döngüsünün koşulu yoktur ve her zaman en az bir kez çalışır, yalnızca break ifadesine ulaştığında sona erer.

RStudio'da Esc tuşuna veya terminalde Ctrl+C tuşuna basarak yürütmeyi durdurabilirsiniz. Bu durumu önlemek için, kod gövdesi içindeki bir ifadenin koşulu değiştirdiğinden emin olun ve maksimum yineleme sayacı ekleyin.

Döngü içindeki hesaplama sonucuna bağlı olarak yineleme sayısı değiştiğinde, örneğin bir değerin eşik değerini geçmesini beklerken, `while` döngüsünü kullanın. Döngü başlamadan önce dizinin bilindiği durumlarda ise `for` döngüsünü kullanın.

Gradyan inişi, k-ortalamalar ve beklenti maksimizasyonu gibi yinelemeli algoritmaların tümü, sabit bir sayı için değil, yakınsama sağlanana kadar çalışır; bu da tam olarak while döngüsünün çalışma prensibidir.

Evet. Yapay zekâ asistanları eksik bir sayaç güncellemesini veya asla FALSE olamayacak bir durumu tespit edebilir. Teşhisi kendi verilerinizde doğrulamak için her zaman bir yazdırma ifadesi veya yineleme sınırı ekleyin.

Bu yazıyı şu şekilde özetleyin: