如何从我的包中提供另一个包的S4类?

时间:2017-07-01 16:04:55

标签: r devtools r-dbi

我正在关注Hadley's guide to implement a DBI backend,它指示我构建从DBI类继承的S4类。

根据说明,为了使DBI类可用,似乎我只需要将DBI列为DESCRIPTION文件中的导入。

然而,即便这样做,我仍然会收到错误

 Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses,  : 
  no definition was found for superclass “DBIDriver” in the specification of class “KazamDriver” 

如果我明确地将DBI附加到library,则此问题会消失,但当然不应在程序包代码中使用library

我的代码:

# DBI-backend.R 
setClass("KazamDriver", contains = "DBIDriver")

# DESCRIPTION
Imports:
  DBI (>= 0.3.0),
  methods

1 个答案:

答案 0 :(得分:1)

DESCRIPTION文件中的Imports字段实际上并不导入任何内容。它只确保在用户安装软件包时安装列出的软件包。

相反,请使用NAMESPACE使其他包或函数可用于您的包中。另外,不要手动编辑NAMESPACE,而是使用Roxygen2(详情here)。

对于这种特殊情况,这意味着

src