R R6 使用 roxygen2 - 类 "ParentClass" 的继承不由'namespace:ParentPackage'导出



我遇到了R6继承的问题。我正在写2个包(工作相关,所以我必须使用假代码,但我会尽量保持准确)。

在ParentPackage中,我定义了一个R6类ParentClass。

#' @name ParentClass      
#' @title ParentClass 
#' @description blah blah
#' @importFrom R6 R6Class
#' @exportClass ParentClass 
#' @export
ParentClass <-
  R6Class('ParentClass',
     initialize() = function(){print('initialize')},
     list(method1 = function(){
      print('test') 
      }
# create helper function to create R6 class
#' @name create_ParentClass_object
#' @title Create a ParentClass object
#' @description
#' Helper function to create ParentClass object
#' @export create_ParentClass_object
create_ParentClass_object = function(){
  return(ParentClass$new())
}

运行以下命令安装

devtools::check()
roxygenize()
document()
install()

NAMESPACE文件看起来是正确的。

export(ParentClass)
export(create_ParentClass_object)
exportClasses(ParentClass)
importFrom(R6,R6Class)

转到文件2,保存在单独的目录中。它叫做ChildPackage。

#' @name ChildClass
#' @title Create ChildClass Object
#' @description blah blah 2
#' @importFrom R6 R6Class
#' @importClassesFrom ParentPackage ParentClass
#' @importFrom ParentPackage ParentClass
#' @export
ChildClass<-
  R6Class('ChildClass',
          inherit = ParentClass,
          initialize = function(){},
          method2 = function(){}
)

但是当我试图编译东西时,我得到一个错误。

roxygenise()
Warning message:
class "ParentClass" is not exported by 'namespace:ParentPackage' 
install()
Error: class "ParentClass" is not exported by 'namespace:ParentPackage' 

注意,加载父库会显示类。例如,ParentPackage::ParentClass显示了类。

R version 4.0.3 (2020-10-10)
roxygen2_7.1.1        devtools_2.3.2        usethis_2.0.0   

当我忘记在一些通用指令(如@import@importClassesFrom)后添加NULL时,我遇到了类似的错误。如果你不这样做,它会将下一个注释行添加到你的指令中。例如:

#' @importClassesFrom mydependency niceclass
#' Some other docs

将在构建时返回以下错误:

Error: class ‘Some’ is not exported by 'namespace:mydependency' 

<<p> 解决方案/strong>在指定通用指令时添加NULL

#' @importClassesFrom mydependency niceclass
NULL
#' Some other docs

相关内容

  • 没有找到相关文章

最新更新