ट्रैक
/
R
R
/
अभ्यास
/
पक्षी दर्शक
पक्षी दर्शक

पक्षी दर्शक

सीखने का अभ्यास

परिचय

यह R में एक बड़ा कॉन्सेप्ट है। इसकी संभावनाओं को समझने में मदद के लिए यह देखना उपयोगी हो सकता है कि अलग-अलग फंक्शन के इनपुट और आउटपुट में कितने आयाम होते हैं।

वेक्टर इनपुट, स्केलर आउटपुट

हम ऐसे फंक्शन पहले ही देख चुके हैं जो एक वेक्टर लेते हैं और एक ही स्केलर जैसी वैल्यू लौटाते हैं:

> v <- 1:5
> length(v)
#> [1] 5
> sum(v)
#> [1] 15

कई सांख्यिकीय फंक्शन भी इसी श्रेणी में आते हैं, जैसे mean()।

लॉजिकल वेक्टर के लिए all() और any() हैं।

वेक्टर इनपुट, वेक्टर आउटपुट

R में कई फंक्शन पूरे वेक्टर पर काम करते हैं और अक्सर आउटपुट भी वेक्टर देते हैं। इसमें ज़्यादातर गणितीय फंक्शन शामिल हैं:

> sq <- c(4, 9, 16, 25)
> sqrt(sq) # square root
#> [1] 2 3 4 5

यह सिर्फ संक्षिप्त और सुविधाजनक नहीं है, बल्कि लूप, लिस्ट कॉम्प्रिहेंशन या रिकर्शन की ज़रूरत भी बचाता है, जो दूसरी भाषाओं में आम हैं। R में वेक्टर फंक्शन अक्सर इन तरीकों से कहीं तेज़ चलते हैं।

किसी वेक्टर को क्रम में लगाने के लिए sort() वैल्यू लौटाता है और order() इंडेक्स लौटाता है:

> v <- c("I", "am", "not", "in", "order")
> sort(v)
#> [1] "am"    "I"     "in"    "not"   "order"
> order(v)
#> [1] 2 1 4 3 5

डिफ़ॉल्ट रूप से वेक्टर बढ़ते क्रम में लगाया जाता है। ज़रूरत पड़े तो decreasing = TRUE दीजिए, या किसी मौजूदा वेक्टर को उलटने के लिए rev() इस्तेमाल कीजिए।

v <- c("I", "am", "not", "in", "order")
sort(v, decreasing = TRUE)
#> [1] "order" "not"   "in"    "I"     "am"

rev(1:4)
#> [1] 4 3 2 1

कुछ फंक्शन इनपुट वेक्टर पर बाएँ से दाएँ काम करते हुए संचयी वेक्टर आउटपुट भी देते हैं:

> cumsum(1:5)
#> [1]  1  3  6 10 15  # sums
> cumprod(1:5)
#> [1]   1   2   6  24 120 # equivalent to factorials

कई वेक्टर इनपुट, वेक्टर आउटपुट

इसी कॉन्सेप्ट का विस्तार वेक्टरों की तुलना करने में भी काम आता है। उदाहरण के लिए, जोड़ियों का अधिकतम निकालने वाला फंक्शन pmax() देखिए:

> v
#> [1] 2 7 9
> w
#> [1] 3 1 5
> pmax(v, w)
#> [1] 3 7 9 # max of each pairwise comparison

निर्देश

आप पक्षियों को देखने के शौकीन हैं और यह हिसाब रखते हैं कि पिछले सात दिनों में आपके बगीचे में कितने पक्षी आए।

आपके सामने छह कार्य हैं, और इन सबमें आपके बगीचे में आने वाले पक्षियों की संख्याओं से जुड़ा काम करना है।

1. जाँचिए कि आज कितने पक्षी आए

आज आपके बगीचे में कितने पक्षी आए, यह लौटाने के लिए today() फंक्शन लागू कीजिए। पक्षियों की गिनती दिन के क्रम में लगी है: पहला एलिमेंट सबसे पुराने दिन की गिनती है और अंतिम एलिमेंट आज की।

birds_per_day <- c(2, 5, 0, 7, 4, 1)
today(birds_per_day)
# => 1

2. आज की गिनती बढ़ाइए

आज की गिनती बढ़ाने के लिए increment_todays_count() फंक्शन लागू कीजिए:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
increment_todays_count(birds_per_day)
# => c(2, 5, 0, 7, 4, 2)

3. देखिए कि कोई ऐसा दिन था या नहीं जब एक भी पक्षी नहीं आया

has_day_without_birds() फंक्शन लागू कीजिए, जो TRUE लौटाता है अगर कोई ऐसा दिन था जब बगीचे में शून्य पक्षी आए; वरना FALSE लौटाता है:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
has_day_without_birds(birds_per_day)
# => true

4. शुरू के दिए गए दिनों में आए पक्षियों की संख्या निकालिए

count_for_first_days() फंक्शन लागू कीजिए। यह लौटाता है कि हफ्ते की शुरुआत से आपके बगीचे में कितने पक्षी आए हैं, लेकिन गिनती सिर्फ हफ्ते की शुरुआत से तय किए गए दिनों तक सीमित रहती है।

birds_per_day <- c(2, 5, 0, 7, 4, 1)
count_for_first_days(birds_per_day, 4)
# => 14

5. व्यस्त दिनों की संख्या निकालिए

कुछ दिन दूसरे दिनों से ज़्यादा व्यस्त होते हैं। व्यस्त दिन वह है जब आपके बगीचे में पाँच या उससे ज़्यादा पक्षी आए हों। व्यस्त दिनों की संख्या लौटाने के लिए busy_days() फंक्शन लागू कीजिए:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
busy_days(birds_per_day)
# => 2

6. पिछले हफ्ते में पक्षियों के आने का चलता जोड़ निकालिए

आप जानना चाहते हैं कि इस हफ्ते अब तक कुल कितने पक्षी आए हैं। हर दिन तक का चलता जोड़ निकालिए।

running_total(c(7, 6, 5, 4, 3, 2, 1))
#> [1]  7 13 18 22 25 27 28

7. दिनों के नाम उनकी व्यस्तता के हिसाब से क्रम में लगाइए

आपको शक है कि पक्षियों के आने पर आसपास के सड़क यातायात के पैटर्न का असर पड़ता है, इसलिए छुट्टी के दिनों और काम के दिनों में यह अलग-अलग होता है।

दिनों के संक्षिप्त नामों को पक्षियों की संख्या के घटते क्रम में लगाइए।

day_names <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
birds_per_day <- c(5, 2, 4, 6, 0, 9, 8)
busy_days_of_week(birds_per_day, day_names)
#> [1] "Sat" "Sun" "Thu" "Mon" "Wed" "Tue" "Fri"
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
R Exercism

पक्षी दर्शक शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और R को 21 कॉन्सेप्ट111 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।