switch() Fonksiyonu
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 47 / 64.
switch(x, name = value, ...), x metnini adlarla karşılaştırır ve eşleşen adın değerini döndürür. Aynı değişkene karşı yapılan uzun bir else if karşılaştırmaları zincirinin yerini alır:
size <- "m"
price <- switch(size, s = 2.5, m = 3, l = 3.5)
print(price)Çıktı:
[1] 3Adsız son değer, hiçbir şey eşleşmediğinde kullanılan varsayılan değerdir. Varsayılan değer olmadan, eşleşmeyen bir switch() görünmez bir şekilde NULL döndürür:
day <- "fri"
print(switch(day, sat = "rest", sun = "rest", "work"))
print(is.null(switch("x", a = 1)))Çıktı:
[1] "work"
[1] TRUEBoş bir değer bir sonrakine aktarılır; böylece birden fazla ad aynı sonucu paylaşabilir:
kind <- function(day) switch(day, sat = , sun = "weekend", "weekday")
print(kind("sun"))
print(kind("tue"))Çıktı:
[1] "weekend"
[1] "weekday"Değerler süslü parantezler içindeki kod bloklarının tamamı olabilir ve sonuç, çalıştırılan bloğun son ifadesidir:
area <- function(shape, a, b = a) {
switch(shape,
square = a^2,
rect = a * b,
circle = {
r <- a / 2
round(pi * r^2, 2)
},
NA)
}
print(area("rect", 3, 4))
print(area("circle", 10))Çıktı:
[1] 12
[1] 78.54Görev
Kolaycalculate(a, op, b) işlevini tamamla. op, plus, minus, times ve over değerlerinden biridir. a ve b değerlerine uygulama sonucunu döndür veya diğer tüm op değerleri için unknown operation döndür. Sıfıra bölme işlemi cannot divide by zero döndürür.
Sağlanan kod, a, op ve b değerlerini (satır başına bir tane) okur ve döndürülen değeri yazdırır.
Kendin dene
calculate <- function(a, op, b) {
# Kodunuzu buraya yazın
"unknown operation"
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), sep = "\n")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı10İleri Düzey Kontrol Akışı
switch() FonksiyonuVektörleştirilmiş ifelse()repeat ve breakÖzyinelemeli FonksiyonlarTekrar - Not Sınıflandırıcısı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi