1

我正在尝试编写一个子类,RJDBC::JDBCConnection因为我需要自定义方法来dbplyr使用dplyr#2941中的方法(最初来自这里)连接包。但是,我并没有覆盖这些*.JDBCConnection方法,而是想为JDBCConnection.

因此,根据这个 Stack Overflow question的建议,我编写了我的包,基本上是这样的:

### 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 question 替换@import@importClassesFrom 结果是一样的。

我怎样才能document()跑步?

4

2 回答 2

3

您还需要添加

Imports: RJDBC

到你的DESCRIPTION文件。例如,请参阅本指南

如果您的包正在使用其他包中的函数,您还需要在您的DESCRIPTION 文件中添加一些行。

...

Imports 用于您的包需要但不需要使用 library() 加载的包。在 Roxygen2 注释中的 @import 或 @importFrom 语句中引用的包,或者通过 :: 运算符访问其功能的包,应该在这里。

在那之后,你的包裹document()对我来说很好。

于 2018-10-01T11:54:22.773 回答
2

当我不依赖roxygen2编写DESCRIPTION文件而是自己添加包时,我成功地记录了包。NAMESPACE由 管理roxygen2

如果我添加线

Imports: methods, RJDBC

或者

Depends: RJDBC

DESCRIPTION手动到文件,devtools::document()运行没有错误。

[ duckmayr 在同一时间发现了它]

于 2018-10-01T12:00:20.793 回答