Расширение класса S4 из другого пакета: ошибка reconcilePropertiesAndPrototype - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь написать подкласс для RJDBC::JDBCConnection, так как мне нужны пользовательские методы для подключения пакета dbplyr, используя подход из 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"

Я также пытался заменить @import на @importClassesFrom согласно этому вопросу , но результат был таким же.

Как мне запустить document()?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Мне удалось документировать пакет, когда я не полагаюсь на roxygen2 для записи моего DESCRIPTION файла, но сам добавляю пакеты.NAMESPACE управляется roxygen2.

Если я добавлю строку

Imports: methods, RJDBC

или

Depends: RJDBC

в файл DESCRIPTION вручную, devtools::document() работает без ошибок.

[ duckmayr обнаружил это в то же время ]

0 голосов
/ 01 октября 2018

Вам также необходимо добавить

Imports: RJDBC

в файл DESCRIPTION.См., Например, это руководство :

Если ваш пакет использует функции из других пакетов, вам также необходимо добавить несколько строк в ваш файл DESCRIPTION.

...

Импорт используется для пакетов, которые нужны вашему пакету, но которые не нужно загружать с помощью library ().Пакеты, упомянутые в инструкциях @import или @importFrom в ваших комментариях Roxygen2, или чьи функции доступны через оператор ::, должны быть здесь.

После этого ваш пакет document() будет в порядкедля меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...