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.
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ı

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.

