2014-09-29 14 views
16

में मेरे पास एक आर पैकेज है जिसे मैं RStudio में बना रहा हूं, चलो इसे my_pkg कहा जाता है।चरित्र (0) चेतावनी जब devtools :: load_all ("।") RStudio

Loading my_pkg 
Warning messages: 
1: character(0) 
2: character(0) 
3: character(0) 
4: character(0) 
5: character(0) 
पैकेज काम ठीक में कार्यों की

सभी: जब मैं RStudio भीतर devtools::load_all(".") चलाने (विशेष रूप से Ctrl + Shift + L शॉर्टकट का उपयोग), मैं निम्न संदेश मिलता है। मेरा NAMESPACE और DESCRIPTION फ़ाइलें कोई वाक्यविन्यास त्रुटियों के साथ पूर्ण हैं। जब मैं ?my_pkg चलाता हूं, हालांकि, सहायता फ़ाइल DESCRIPTION फ़ाइल में प्रदान किए गए विनिर्देशों से मेल नहीं खाती है। जब मैं DESCRIPTION से Imports को हटाता हूं, तो character(0) चेतावनी संदेश नहीं है। बेशक, मुझे उन आयात की जरूरत है। जब मैं Imports से Suggests बदलता हूं, तो character(0) चेतावनी संदेश होता है।

यहां विवरण फ़ाइल सामग्री है, कुछ चीजों को आईपी की सुरक्षा के लिए बदल दिया गया है।

Package: scoutdroid 
Title: This is where the title is. 
Version: 0.1 
[email protected]: "Ben Hanowell <[email protected]> [aut, cre]" 
Description: This is where the description is. 
Depends: 
    R (>= 3.1.0) 
Imports: 
    dplyr, 
    lubridate, 
    mboost, 
    randomForestSRC, 
    RODBC, 
    stringr 
License: file LICENSE 
LazyData: true 

और यहां NAMESPACE है।

# Generated by roxygen2 (4.0.1): do not edit by hand 

import(RODBC) 
import(dplyr) 
import(lubridate) 
import(mboost) 
import(parallel) 
import(randomForestSRC) 
import(stringr) 

जब मैं RStudio बिल्ड टैब में बिल्ड & लोड करें बटन का उपयोग करें, मैं निम्नलिखित चेतावनी मिलती है:

आलसी लोड करने के लिए

** तैयारी कर पैकेज

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

संपादित जोड़ा कुछ लोगों को यह समझने में मदद करने के लिए और अधिक जानकारी क्या हो सकती है।

संपादित 2 मैंने DESCRIPTION फ़ाइल भी जोड़ा, हालांकि मैं पूर्ण पैकेज प्रदान नहीं करता, जो स्वामित्व है।

संपादित करें 3 जोड़ा गया NAMESPACE

संपादित करें 4 बिल्ड टैब में RStudio Build & रीलोड बटन का उपयोग करते समय होने वाली चेतावनियां जोड़ी गईं।

+0

क्या आपका पैकेज github – Dason

+0

नंबर पर है। यह मालिकाना है। * संपादित करें * यह बिटबकेट पर है, लेकिन पहुंच निजी है। –

+1

अच्छी शुभकामनाएं। शायद आप कम से कम पुनरुत्पादित उदाहरण बनाने का प्रयास कर सकते हैं। – Dason

उत्तर

16

टिप्पणियों में कुछ संवाद के बाद, हमने पाया कि load_all खाली चेतावनियां आपको फ़ंक्शन नाम विवादों के कारण पैकेज लोड करते समय वास्तव में शुरू की जाती हैं।

समस्या यह है कि आप किसी पैकेज से फ़ंक्शन आयात कर रहे हैं, फिर उस फ़ंक्शन को ओवरराइट कर रहे हैं।

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

यह load_all उन चेतावनी (केवल एक अनुमान) है, जिसके कारण आप character(0) बजाय देखना ओढ़ना करने का प्रयास किया जा सकता है की तरह लग रहा है: जब कि आर चेतावनी फेंकता के रूप में आप को देखा है जब आप क्लिक किया RStudio में "& पुनः लोड बनाएँ" होता है वास्तविक चेतावनियों का। (ये विशेष चेतावनियां चुप्पी मुश्किल हैं।)

आम तौर पर पूरे पैकेज के नामस्थान को आयात करना एक अच्छा विचार नहीं है। आपको इसके बजाय केवल प्रतीकों को आयात करना चाहिए। अधिक के लिए मेरा this post देखें।

समाधान आपके NAMESPACE फ़ाइल में import के बजाय importFrom का उपयोग करना है।

+1

दूसरों के लिए यहां आने के लिए, समाधान की तलाश है। जब आप 'devtools :: check' चलाते हैं, तो उपरोक्त चेतावनियां दिखाएंगी – adibender