मैं RJDBC::JDBCConnection के लिए एक उपवर्ग लिखने की कोशिश कर रहा हूं क्योंकि मुझे dplyr#2941 (मूल रूप से यहां से)। हालाँकि, मैं *.JDBCConnection विधियों को अधिलेखित नहीं कर रहा हूँ, लेकिन JDBCConnection के उपवर्ग के लिए विधियाँ लिखना चाहता हूँ।

इसलिए, इस स्टैक ओवरफ़्लो प्रश्न की सलाह का पालन करते हुए, मैंने अपना पैकेज लिखा जो अनिवार्य रूप से यह है:

### R/testclass.R ####################
#' Test class
#'
#' This extends JDBCConnection in package RJDBC
#'
#' @import RJDBC
#'
setClass("TestConnection", contains = "JDBCConnection")

### DESCRIPTION ######################
Package: test
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Author: Who wrote it
Maintainer: The package maintainer <yourself@somewhere.net>
Description: More about what it does (maybe more than one line)
    Use four spaces when indenting paragraphs within the Description.
License: What license is it under?
Encoding: UTF-8
LazyData: true

जिस वर्ग का मैं विस्तार करना चाहता हूं वह मौजूद है, जैसा कि help("JDBCConnection-class", package = "RJDBC") से जांचा जा सकता है।

इस पैकेज के भीतर devtools::document() को कॉल करना निम्न त्रुटि देता है:

Updating test documentation
Loading test

Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses,  : 
no definition was found for superclass "JDBCConnection" in the specification of class "TestConnection"

मैंने इस SO प्रश्न के अनुसार @import को @importClassesFrom से बदलने का भी प्रयास किया, लेकिन परिणाम यह था वैसा ही।

मैं document() कैसे चल सकता हूं?

1
akraf 1 अक्टूबर 2018, 14:29

2 जवाब

सबसे बढ़िया उत्तर

आपको भी जोड़ना होगा

Imports: RJDBC

आपकी DESCRIPTION फ़ाइल में। उदाहरण के लिए, देखें, यह गाइड:

यदि आपका पैकेज अन्य पैकेजों में फ़ंक्शन का उपयोग कर रहा है, तो आपको अपनी DESCRIPTION फ़ाइल में कुछ पंक्तियाँ भी जोड़नी होंगी।

...

आयात का उपयोग उन पैकेजों के लिए किया जाता है जिनकी आपके पैकेज को आवश्यकता होती है, लेकिन उन्हें लाइब्रेरी () के साथ लोड करने की आवश्यकता नहीं होती है। आपकी Roxygen2 टिप्पणियों में @import या @importFrom स्टेटमेंट में संदर्भित पैकेज, या जिनके फ़ंक्शन :: ऑपरेटर के माध्यम से एक्सेस किए जाते हैं, यहां होने चाहिए।

उसके बाद, आपका पैकेज document() मेरे लिए ठीक रहेगा।

3
duckmayr 1 अक्टूबर 2018, 14:54

मैं पैकेज का दस्तावेजीकरण करने में सफल रहा जब मैं अपनी DESCRIPTION फ़ाइल लिखने के लिए roxygen2 पर निर्भर नहीं था, लेकिन स्वयं पैकेज जोड़ता था। NAMESPACE का प्रबंधन roxygen2 द्वारा किया जाता है।

अगर मैं लाइन जोड़ता हूं

Imports: methods, RJDBC

या

Depends: RJDBC

मैन्युअल रूप से DESCRIPTION फ़ाइल में, devtools::document() बिना किसी त्रुटि के चलता है।

[डकमायर ने उसी समय इसका पता लगा लिया]

2
akraf 1 अक्टूबर 2018, 15:00