2012-05-11 12 views
6

संभव डुप्लिकेट:
How do you you determine the namespace of a function?नाम

मैं ऐसा करने के तरीके नहीं पता ... कैसे अपने पैकेज का नाम जानते हो आर में एक निश्चित समारोह के लिए? मैं एक ऐसा फ़ंक्शन रखना चाहता हूं जिसने फ़ंक्शन का नाम दिया हो, उस पैकेज का नाम लौटाए जो उसके पास है। कोई उपाय?

+0

@Andrie अच्छी तरह से देखा गया। यह देखते हुए कि सभी पैकेजों में अब नामस्थान है, क्यू एंड ए में हैडली द्वारा उत्तर आप मुझे सबसे अच्छा समाधान के रूप में मारने के लिए लिंक करते हैं। –

+0

@ गैविन सिम्पसन: यह 'निष्कर्ष' से बेहतर क्यों है? (मैं बस एक छात्र को समझाते हुए कल्पना करने की कोशिश कर रहा हूं कि उन्हें 'getNamespaceName (पर्यावरण (foo)) का उपयोग क्यों करना चाहिए 'ढूंढने के बजाय' (फू) '- पूर्व में थोड़ा जादुई लगता है, और यदि इसमें महत्वपूर्ण नहीं है फायदे ...) –

+1

@ बेनबॉल्कर 'ढूंढें()' & 'ढूंढें फ़ंक्शन()' t * वापस * नामस्थान (इसलिए पैकेज) नाम। उनके परिणामों को और प्रसंस्करण की आवश्यकता है। हैडली का सिर्फ एक चरित्र के रूप में पैकेज नाम है। मैं इसे एक समारोह या प्रोग्रामिंग लिखने के लिए पसंद कर सकता हूं, लेकिन उपयोगकर्ता कोड के लिए अन्य ठीक हैं। –

उत्तर

6

बेहतर समाधान हो सकते हैं, लेकिन find("functionname") उचित रूप से काम करने लगता है? हालांकि, यह केवल लोड किए गए पैकेज के लिए काम करता है। , वे थोड़ा के बारे में gsub देना नहीं है;

> find("strwidth") 
[1] "package:graphics" 
> find("qplot") 
character(0) 
> library(ggplot2) 
> find("qplot") 
[1] "package:ggplot2" 
> 

(आप gsub("^package:","",results) उपयोग कर सकते हैं आप पैकेज के कच्चे नाम की जरूरत है)

(पिछले प्रश्न Andrie से जुड़े हुए के जवाब इस जवाब में शामिल और वे सभी गैर लोड संकुल नहीं मिल के मुद्दे का हिस्सा लगते हैं)

यहाँ गैर लोड संकुल में भी काम करता है खोजने के लिए एक त्वरित हैक है:।

findAllFun <- function(f) { 
    h <- help.search(paste0("^",f,"$"),agrep=FALSE) 
    h$matches[,"Package"] 
} 

findAllFun("qplot") 
## "ggplot2" 
findAllFun("lambertW") 
## "emdbook" "VGAM" 
> findAllFun("xYplot") 
## "Hmisc" "lattice" 

यदि आपको गैर-में पैकेज स्थापित करने की आवश्यकता है (यानी। सीआरएएन खोजना), findFnsos पैकेज से आपका मित्र होगा।

+0

और गैर-लोड किए गए पैकेजों के बारे में क्या? – Nestorghh

संबंधित मुद्दे