使用 Roxygen 记录 setAs() 和 setOldClass()
我正在开发一个提供名为“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 haltedA 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
roxygen2 解析器未解析
setOldClass()
和setAs()
。我们需要获取适当的
@name
标签。我不详细了解
setAs()
函数,但as()
函数是从方法包中加载的。因此,我认为我们不需要在 NAMESPACE 中添加
export(as)
条目。The roxygen2 parser didn't parse
setOldClass()
andsetAs()
.We need to obtain appropriate
@name
tags.I don't know about the
setAs()
function in detail, but theas()
function is loaded from the methods package.So, I think that we don't need
export(as)
entry in NAMESPACE.