This question में मास्किंग विधियों और विशेष रूप से this answer में निम्नलिखित प्रश्न सामने आए: मैं आर में तरीकों के मास्किंग के बारे में चेतावनी कैसे प्राप्त कर सकता हूं?आर
यदि आप एक स्वच्छ आर सत्र में निम्न कोड चलाते हैं, तो आप देखेंगे कि dplyr
lag
के लिए डिफ़ॉल्ट विधि को बदलता है।
lag(1:3, 1)
## [1] 1 2 3
## attr(,"tsp")
## [1] 0 2 1
require(dplyr)
lag(1:3, 1)
## [1] NA 1 2
आप पैकेज dplyr
देते हैं, तो आप कई नकाबपोश वस्तुओं के लिए warnigns मिलता है, लेकिन lag
के लिए प्राथमिक विधि के बारे में कोई चेतावनी नकाबपोश जा रहा है। कारण यह है कि lag
पर कॉल करते समय, stats
पैकेज से जेनेरिक फ़ंक्शन को कॉल किया जाता है।
lag
## function (x, ...)
## UseMethod("lag")
## <bytecode: 0x000000000c072188>
## <environment: namespace:stats>
और methods(lag)
सिर्फ मुझसे कहता है एक विधि lag.default
नहीं है। मैं वहाँ getAnywhere
का उपयोग कर दो तरीके हैं कि देख सकते हैं:
getAnywhere(lag.default)
## 2 differing objects matching ‘lag.default’ were found
## in the following places
## registered S3 method for lag from namespace dplyr
## namespace:dplyr
## namespace:stats
## Use [] to view one of them
लेकिन इस की आवश्यकता है मैं जाँच करने के लिए पता है कि अगर डिफ़ॉल्ट lag
विधि dplyr
से बदल गया था। क्या जांचने का कोई तरीका है कि विधियों को मुखौटा किया गया था या नहीं? शायद वहाँ इस तरह एक समारोह है:
checkMethodMasking(dplyr)
## The following methods are masked from 'package:dplyr':
## lag.default
एनबी: यह जब मैं require(dplyr)
साथ dplyr
लोड एक चेतावनी है करने के लिए पर्याप्त नहीं है। अगर मैं पैकेज को संलग्न किए बिना नामस्थान लोड करता हूं तो विधि भी अधिभारित हो जाती है (उदा। मैं dplyr::mutate
पर कॉल करता हूं, या यहां तक कि मैं dplyr
फ़ंक्शन को कॉल करता हूं जो importFrom
का उपयोग करके आयात किया गया था)।
FWIW dplyr अगले संस्करण – hadley