Vektörleştirilmiş ifelse()
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 48 / 64.
if bir koşulu test eder. Birkaç değer içeren bir vektör verildiğinde the condition has length > 1 hatasıyla durur. ifelse(test, yes, no) eleman bazında çalışır ve her eleman için bir sonuç döndürür:
temps <- c(12, 25, 31, 18)
print(ifelse(temps > 20, "warm", "cool"))Çıktı:
[1] "cool" "warm" "warm" "cool"yes ve no aynı uzunlukta vektörler olabilir, böylece her öğe kendi hesaplanan değerini alabilir:
price <- c(40, 120, 75)
final <- ifelse(price > 100, price * 0.9, price)
print(final)Çıktı:
[1] 40 108 75İkiden fazla sonuç için ifelse() çağrılarını iç içe yerleştirin. Her öğe için koşullar sırayla denetlenir:
scores <- c(95, 72, 48, 81)
grade <- ifelse(scores >= 90, "A", ifelse(scores >= 70, "B", "C"))
print(grade)Çıktı:
[1] "A" "B" "C" "B"ifelse(), her satırın kendi etiketine ihtiyaç duyduğu yeni bir veri çerçevesi sütunu için kullanışlıdır:
df <- data.frame(item = c("tea", "oil"), stock = c(0, 8))
df$status <- ifelse(df$stock == 0, "sold out", "available")
print(df)Çıktı:
item stock status
1 tea 0 sold out
2 oil 8 availableGörev
Kolayshipping(weights) işlevini tamamla. Her paketin kargo ücretini , ile birleştirerek döndür: 1 kg'a kadar olan paketlerin ücreti 4, 5 kg'a kadar olanların ücreti 9 ve daha ağır paketlerin ücreti kg başına 2 olsun. Döngü yerine ifelse() kullan.
Sağlanan kod, ağırlıkları virgülle ayrılmış bir satır olarak okur ve döndürülen değeri yazdırır.
Kendin dene
shipping <- function(weights) {
# Kodunuzu buraya yazın
""
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(shipping(as.numeric(strsplit(input[1], ",")[[1]])), 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