我正在尝试为RJDBC::JDBCConnection
编写一个子类,因为我需要使用dplyr#2941(最初是from here)中的方法使用自定义方法来连接dbplyr
包。但是,我不是要覆盖*.JDBCConnection
方法,而是要为JDBCConnection
的子类编写方法。
因此,根据this 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"
我还尝试用@import
as per this SO question替换@importClassesFrom
,但是结果是一样的。
如何让document()
运行?
答案 0 :(得分:3)
您还需要添加
Imports: RJDBC
到您的DESCRIPTION
文件。例如,参见this guide:
如果您的程序包正在使用其他程序包中的功能,则还需要 在描述文件中添加一些行。
...
导入用于您的软件包所需的软件包,但是 不需要加载library()。包中提到的 Roxygen2注释中的@import或@importFrom语句,或 通过::运算符访问函数,应该在此处。
之后,您的包裹document()
对我很好。
答案 1 :(得分:2)
当我不依靠roxygen2
编写我的DESCRIPTION
文件而是自己添加软件包时,我成功地记录了该软件包。 NAMESPACE
由roxygen2
管理。
如果我添加线路
Imports: methods, RJDBC
或
Depends: RJDBC
手动DESCRIPTION
运行devtools::document()
文件。
[ duckmayr同时发现了它]