BaşlayınÜcretsiz başlayın

keep() ve discard() ile ayır

Sonuçlarımızı iki gruba ayırmak istiyoruz: 100'ün üzerindeki günler ve 100'ün altındaki günler. Bunu yapmak için keep() ve discard() fonksiyonlarını birleştireceğiz.

Neden iki fonksiyon? Tek bir fonksiyon kullanamaz mıyız? is_less_than_hundred adlı bir eşleyici (mapper) oluşturamaz mıyız?

Oluşturabiliriz, ama bu daha fazla hataya açık olurdu: kopyalayıp yapıştırmaktansa keep()ten discard()a geçmek daha kolaydır. İki fonksiyonu birlikte kullanarak yalnızca tek bir eşleyiciye ihtiyaç duyarız. Bu da eşik değerini değiştirmek istersek bunu bir kez yapmamızın yeterli olacağı anlamına gelir; iki eşleyicimiz olsaydı iki kez değiştirmemiz gerekirdi.

Bu, kod yazarken uygulamaya çalışman gereken bir kuraldır: Eğer bir şeyi değiştirmen gerekirse, bunu yalnızca bir yerde değiştirmen yetecek şekilde kod yaz.

all_visits çalışma alanında hâlâ mevcut.

Bu egzersiz, kursun bir parçasıdır

purrr ile Orta Düzey Fonksiyonel Programlama

Kursa Göz Atın

Egzersiz talimatları

  • Günlerin adlarını eklemek için set_names() fonksiyonunu all_visits üzerinde eşle ve all_visits_named'i oluştur.
  • .x 100'ün üzerinde mi diye test edecek threshold adlı bir eşleyici (mapper) oluştur.
  • 100'ün üzerindeki öğeleri tutarak group_over'ı oluştur.
  • 100'ün üzerindeki öğeleri eleyerek group_under'ı oluştur.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# Set the name of each subvector
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
all_visits_named <- ___(all_visits, ~ ___(.x, ___))

# Create a mapper that will test if .x is over 100 
threshold <- ___

# Run this mapper on the all_visits_named object: group_over
group_over <- ___(all_visits_named, ~ ___(.x, ___))

# Run this mapper on the all_visits_named object: group_under
group_under <-  ___(all_visits_named, ~ ___(.x, ___))
Kodu Düzenle ve Çalıştır