Packages और Namespaces

Defensive R Programming

Dr. Colin Gillespie

Jumping Rivers

आपका global environment

  • डिफ़ॉल्ट environment .GlobalEnv है
  • Objects environments में स्टोर होते हैं
  • कंटेंट देखने के लिए ls() चलाएँ
  • यह environment जल्दी भर जाता है
  • हम objects को मिलाना शुरू कर सकते हैं
n
# or did I want
N
Defensive R Programming

Packages और environments

  • Packages नामों के लिए spaces के रूप में namespaces इस्तेमाल करते हैं
    • आप namespace को पैकेज रखने वाला डिब्बा मान सकते हैं
  • Namespace चीजों को क्रम में रखता है
    • कुछ-कुछ folders जैसा
Defensive R Programming

Exported functions

  • library() आपको इस पैकेज वाले डिब्बे तक direct access देता है
  • library("dplyr") से dplyr के exported functions तक सीधी पहुँच मिलती है
## 238 exported functions
getNamespaceExports("dplyr")
  • वैकल्पिक रूप से, :: से किसी function तक सीधे पहुँच सकते हैं
## dplyr का filter function
dplyr::filter
Defensive R Programming

Great minds think alike

  • कभी-कभी package authors एक ही नाम का function बनाते हैं
## The filter() function
stats::filter()
dplyr::filter()
  • अगर मैं filter() टाइप करूँ तो कौन-सा version चलेगा?
  • यह package load order पर निर्भर है!
Defensive R Programming

Great minds think alike

  • search() मदद करता है
search()
# [1] ".GlobalEnv"         "package:dplyr"      "package:stats"  
# <Other packages>
Defensive R Programming

रक्षात्मक रहें

Namespace clashes सिर्फ झुंझलाहट नहीं हैं

  • ये ऐसे bugs ला सकते हैं जिन्हें पकड़ना मुश्किल हो
Defensive R Programming

conflicted पैकेज आपकी function choice को स्पष्ट करने में मदद करता है

library("conflicted")
library("dplyr")
filter
#Error: [conflicted] `filter` found in 2 packages.
#Either pick the one you want with `::` 
# * dplyr::filter
# * stats::filter
#Or declare a preference with `conflict_prefer()`
# * conflict_prefer("filter", "dplyr")
# * conflict_prefer("filter", "stats")
Defensive R Programming

जागने का समय

Defensive R Programming

Preparing Video For Download...