2015-05-13 7 views
5

किसी पैकेज के फ़ंक्शन में "फ़ंक्शन नहीं ढूंढ सका"% dopar% "" से बचने के लिए कैसे करें जब केवल आयात (निर्भर नहीं) फ़ोरैच का विवरण पैकेज? क्या foreach ::% dopar% जैसा कोई तरीका है क्योंकि मैं फ़ोरैच का उपयोग करता हूं :: फ़ंक्शन में फ़ोरैच? धन्यवाद।% dopar% का उपयोग कैसे करें जब पैकेज के विवरण में केवल foreach आयात करें

कोड की तरह:

समारोह

foreach::foreach(1:9) %dopar% { 

...} 

में वर्णन

Imports: 
    Matrix, 
    parallel, 
    foreach, 
    doParallel 

उत्तर

3

आप बैकटिक उपयोग करने की आवश्यकता है: foreach::`%dopar%` (या उद्धरण foreach::"%dopar%" भी काम करेंगे)।

+1

आप% dopar% कैसे स्पष्ट रूप से कॉल करने के लिए के बारे में अधिक थोड़ा स्पष्ट कर सके चलाने के लिए सक्षम होना चाहिए इस प्रकार है? मैं निम्नलिखित को चलाने की कोशिश कर रहा हूं जो काम नहीं करता है। 'foreach :: foreach (i = 1: 9, .combine = "+") foreach :: \ '% dopar% \' {i} ' और मैंने बैकटीक्स के साथ विभिन्न संयोजनों का प्रयास किया है, लेकिन यह आमतौर पर देता है एक "अप्रत्याशित प्रतीक" त्रुटि। धन्यवाद! –

+0

@ केविनजेन मुझे यकीन नहीं है कि इस त्रुटि को पुन: उत्पन्न कैसे करें, और मुझे यह कभी याद नहीं है। यदि आप उद्धरण का उपयोग करते हैं तो क्या आप वही प्राप्त करते हैं? '\'% Dopar% \ '<- foreach :: \'% dopar% \ '' जैसे उपनाम को परिभाषित करने के बारे में और फिर बस इसका उपयोग करें? – konvas

+0

हाँ, अगर मैं Roxygen2 का उपयोग किये बिना स्पष्ट रूप से इस फ़ंक्शन को आज़माकर परिभाषित करता हूं और न ही बैकटिक्स और न ही काम उद्धृत करता हूं। मुझे एहसास हुआ कि मुझे Roxygen2 का उपयोग करते समय 'foreach ::% dopar% 'के बारे में चिंता करने की आवश्यकता नहीं थी। यह सिर्फ 'आयात (foreach) ' –

4

@Kevin ज़ेन,

मैं एक ही समस्या आ रहा था, लेकिन मुझे लगता है कि मैं सिर्फ नाम स्थान फ़ाइल में "importFrom" फ़ील्ड का उपयोग करके यह संकल्प लिया। मैं Roxygen2 का उपयोग दस्तावेज़ के लिए, तो मैं बस टैग शामिल:

#' @importFrom foreach %dopar% 

समारोह foreach के साथ में कहा जाता है यह की तरह नाम स्थान फ़ाइल में एक क्षेत्र बनाया:।

importFrom(foreach,"%dopar%") 

इसलिए यदि आप नहीं कर रहे Roxygen2 का उपयोग नहीं कर रहे हैं, आप बस उस लाइन को अपने नेमस्पेस में डाल सकते हैं और उसे चाल भी करना चाहिए।

इससे शिकायत से क्रैन चेक को रोकना चाहिए। हालांकि, एक बार आपको लगता है कि पहले से ही "foreach" पैकेज लोड और के माध्यम से जुड़ा हुआ नहीं है एक कंप्यूटर पर कोड चलाने का प्रयास:

library(foreach) 

आप एक संदेश मिल जाएगा कि% dopar% नहीं करता है, तो "foreach पाया जाता है "आपकी वर्णन फ़ाइल में" निर्भर करता है "के बजाय" आयात "के तहत सूचीबद्ध है। तो सुनिश्चित करें कि "निर्भर" फ़ील्ड में foreach सूचीबद्ध है।

3

निम्नलिखित मेरे लिए काम किया। परिभाषित एक स्थानीय %do% या %dopar% रूप

`%dopar%` <- foreach::`%dopar%` 
`%do%` <- foreach::`%do%` 

तो फिर तुम

foreach::foreach(i = 1:9, .combine = "+") %dopar% {i} 
foreach::foreach(i = 1:9, .combine = "+") %do% {i} 
+0

के साथ ठीक काम करता है यह समाधान मेरे लिए काम करता है, और अन्य लोग यहां नहीं करते हैं। धन्यवाद। –

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