使用 Roxygen 记录 setAs() 和 setOldClass()

发布于 2024-12-10 04:45:45 字数 919 浏览 1 评论 0原文

我正在开发一个提供名为“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 得到了这个:

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

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

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

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

#' @importClassesFrom sp SpatialPointsDataFrame

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

R> document("MyPackage")

I'm developing a package that provides an S3 class named "Foo". It also provides an "as" method for coercing it to (someone else's) S4 class named "Bar". My code looks like this:

#' ...
setOldClass("Foo")

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

edit I've tried this:

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

but then I get this from R CMD CHECK:

checking whether the name space can be loaded with stated dependencies ... WARNING
Error in namespaceExport(ns, exports) : undefined exports: as
Calls: loadNamespace -> namespaceExport
Execution halted

A namespace must be able to be loaded with just the base namespace loaded: otherwise if the namespace gets loaded by a saved object, the session will be unable to start.

Probably some imports need to be declared in the NAMESPACE file.

in a separate .R file, I have:

#' @importClassesFrom sp SpatialPointsDataFrame

I'm using hadley's devtools package, so I guess it's roxygen2. This is what I do:

R> document("MyPackage")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疯了 2024-12-17 04:45:45

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) 条目。

The roxygen2 parser didn't parse setOldClass() and setAs().
We need to obtain appropriate @name tags.

#' "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
})

I don't know about the setAs() function in detail, but the as() function is loaded from the methods package.
So, I think that we don't need export(as) entry in NAMESPACE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文