शुरू करेंमुफ़्त में शुरू करें

keep() और discard() के साथ अलग-अलग करें

हम अपने नतीजों को दो समूहों में बाँटना चाहते हैं: 100 से ऊपर वाले दिन, और 100 से नीचे वाले दिन। इसके लिए हम keep() और discard() को साथ में इस्तेमाल करेंगे.

दो फंक्शन क्यों? क्या हम एक ही फंक्शन से नहीं कर सकते? क्या हम is_less_than_hundred नाम का एक mapper नहीं बना सकते?

हम बना सकते हैं, लेकिन उससे गलती की संभावना बढ़ती है: keep() से discard() पर स्विच करना कॉपी-पेस्ट करने से आसान है। दोनों फंक्शनों को मिलाकर हमें सिर्फ एक mapper चाहिए। इसका मतलब है कि अगर हमें threshold बदलनी हो, तो हमें सिर्फ एक जगह बदलना पड़ेगा, दो जगह नहीं, जैसा कि दो mappers होने पर करना पड़ता।

कोड लिखते समय यह एक अच्छी आदत है: ऐसा लिखिए कि अगर किसी एक चीज़ में बदलाव करना हो, तो वह बदलाव सिर्फ एक ही जगह करना पड़े.

all_visits अब भी आपके वर्कस्पेस में उपलब्ध है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

पाठ्यक्रम देखें

अभ्यास निर्देश

  • all_visits पर set_names() फंक्शन को map कीजिए ताकि दिनों के नाम जुड़ जाएँ: all_visits_named.
  • threshold नाम का एक mapper बनाइए जो जाँचे कि .x 100 से अधिक है या नहीं.
  • 100 से अधिक वाले एलिमेंट्स को रखते हुए group_over बनाइए.
  • 100 से अधिक वाले एलिमेंट्स को हटाते हुए group_under बनाइए.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# 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, ___))
कोड संपादित करें और चलाएँ