2017-12-22 118 views
5

क्या नामस्थान घोषित करने और इसमें एक फ़ंक्शन निर्यात करने का कोई तरीका है ताकि इसे पूरे पैकेज बनाने के बिना :: का उपयोग करके एक्सेस किया जा सके?नामस्थान कैसे बनाएं और इसमें फ़ंक्शन निर्यात करें?

::: निम्नलिखित काम करता है लेकिन नहीं :::

ns <- namespace::makeNamespace("my_namespace") 
assign("test",7, env=ns) 
my_namespace:::test # Triple colon - works. 
# [1] 7 
my_namespace::test # Double colon - doesn't work. 
# Error: 'test' is not an exported object from 'namespace:my_namespace' 

वहाँ assign के लिए एक विकल्प है कि अंतिम पंक्ति काम होगा है? (लक्ष्य एक पैकेज अनुकरण करने के लिए, जबकि यह विकासशील सक्षम होने के लिए है, इसलिए जैसे कि यह एक पूरा पैकेज है अन्य फ़ाइलों के लिए इसका इस्तेमाल कर सकते हैं, लेकिन यह जल्दी से source बजाय devtools::install का उपयोग कर पुनः लोड किया जा सकता है।)

+1

आप गैर आधार संकुल का उपयोग कर रहे हैं कि क्या करें संकेत मिलता है। 'मेकनामस्पेस' फ़ंक्शन नहीं मिल रहा है। – nicola

+0

@nicola Apologies - यह नामस्थान :: makeNamespace है। मैंने सवाल संपादित किया है। – apc53c

उत्तर

2

base::namespaceExport(ns, ls(ns)) काम करने लगता है (बेशक आप दूसरे तर्क में निर्यात करने के लिए ऑब्जेक्ट्स की सूची के रूप में सबसेट का उपयोग भी कर सकते हैं)। इसका इस्तेमाल एक बार आप नाम स्थान में सभी वस्तुओं है कि आप निर्यात करना चाहते हैं परिभाषित किया है:

ns <- namespace::makeNamespace("my_namespace") 
assign("test", 7, env = ns) 
base::namespaceExport(ns, ls(ns)) 

my_namespace::test 

आउटपुट:

7 
1

आप निम्न मिल सकता है पैकेज के विकास को तेज करने के आपके इच्छित उपयोग के मामले के लिए उपयोगी:

http://stat.ethz.ch/R-manual/R-patched/library/utils/html/getFromNamespace.html

विवरण

उपयोगिता एक namespac में पहुँच सकते हैं और गैर-निर्यात कार्यों को बदलने के लिए कार्य करता है ई, नामस्थान के साथ पैकेज विकसित करने में उपयोग के लिए।

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