代码之家  ›  专栏  ›  技术社区  ›  akraf

从另一个包扩展S4类:ReconcileProperties和Prototype错误

  •  1
  • akraf  · 技术社区  · 6 年前

    RJDBC::JDBCConnection 因为我需要自定义方法来连接 dbplyr 使用来自的方法打包 dplyr#2941 (最初 from here *.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 @importClassesFrom as per this SO question ,但结果是一样的。

    document() 去跑步?

    2 回复  |  直到 6 年前
        1
  •  3
  •   duckmayr    6 年前

    您还需要添加

    Imports: RJDBC
    

    给你的 DESCRIPTION 文件。比如说, this guide :

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

    ...

    不需要用library()加载。中提到的包 函数是通过::运算符访问的,应该在这里。

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

        2
  •  2
  •   akraf    6 年前

    我成功的文件包时,我不依赖 roxygen2 写我的 DESCRIPTION 文件,但添加自己的包。 NAMESPACE 由管理 罗克西根2

    如果我加上一行

    Imports: methods, RJDBC
    

    Depends: RJDBC
    

    说明 手动归档, devtools::document()

    [ duckmayr同时发现的