【问题标题】:Documenting setAs() and setOldClass() with Roxygen使用 Roxygen 记录 setAs() 和 setOldClass()
【发布时间】:2011-12-07 05:00:23
【问题描述】:

我正在开发一个包,它提供一个名为“Foo”的 S3 类。它还提供了一种“as”方法,用于将其强制为(其他人的)名为“Bar”的 S4 类。我的代码如下所示:

#' ...
setOldClass("Foo")

#' ...
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

编辑我试过这个:

#' ...
#' @name as
#' @export
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

但后来我从 R CMD CHECK 得到这个:

检查名称空间是否可以加载声明的依赖项...警告 namespaceExport(ns,exports)中的错误:未定义的导出:as 调用:loadNamespace -> namespaceExport 执行停止

命名空间必须能够仅加载基本命名空间:否则如果命名空间被保存的对象加载,会话将无法启动。

可能需要在 NAMESPACE 文件中声明一些导入。

在一个单独的 .R 文件中,我有:

#' @importClassesFrom sp SpatialPointsDataFrame

我正在使用 hadley 的 devtools 包,所以我猜它是 roxygen2。我就是这样做的:

R> document("MyPackage")

【问题讨论】:

  • hadley 的开发工具包。编辑以显示最佳尝试。
  • 不错的编辑。如果这不能很快得到答复,我会感到惊讶。

标签: r roxygen2


【解决方案1】:

roxygen2 解析器没有解析 setOldClass()setAs()。 我们需要获取合适的@name标签。

#' "Foo" class
#'
#' @name Foo-class
#' @aliases Foo
#' @family Foo
#'
#' @exportClass Foo
setOldClass("Foo")

#' As("Foo", "SpatialPointsDataFrame")
#'
#' @name as
#' @family Foo
#'
#' @importClassesFrom sp SpatialPointsDataFrame
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

我不详细了解setAs() 函数,但as() 函数是从方法包中加载的。 所以,我认为我们不需要在 NAMESPACE 中输入export(as)

【讨论】:

  • 不是真正的 roxygen 专业人士,这个问题已经很老了,但是...setAs()coerce 上创建了一个方法,签名为coerce,Foo,SpatilPointsDataFrame,所以你会喜欢@name coerce可能是@aliases coerce,Foo,SpatilPointsDataFrame-method。您想@exportMethods coerce 公开此信息。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2011-01-19
  • 2016-10-23
  • 2012-04-23
  • 1970-01-01
  • 2019-11-05
相关资源
最近更新 更多