mpi*_*tas 11 r devtools roxygen2
我正在创建一个包,对于S3方法,我使用它们导出它们
##' @method predict myclass
##' @export
predict.myclass <- function(object,...) { }
Run Code Online (Sandbox Code Playgroud)
现在当我加载包时,然后predict
处理类的对象myclass
,但predict.myclass
不导出函数.在NAMESPACE我只能获得参赛作品S3method(predict,myclass)
.那么有没有一种方法可以导出predict.myclass
,这样用户就可以获得predict.myclass
他(她)predict.myclass
在控制台中写入的代码?
duc*_*ayr 13
如果您希望以自动方式在您的S3method
和export
指令中同时NAMESPACE
使用roxygen2
,您可以简单地添加一个@export
更明确的额外标签。
为了说明,我创建了一个虚拟包exportTest
. 这个包在R/
子目录下只有一个文件print.foo.R
:
#' Print method for "foo" class
#'
#' @param x An object of class "foo"
#' @param ... Other arguments passed to or from other methods
#'
#' @export print.foo
#' @export
print.foo <- function(x, ...) {
cat("This is just a dummy function.\n")
}
Run Code Online (Sandbox Code Playgroud)
在document()
ing之后,我有以下内容NAMESPACE
:
# Generated by roxygen2: do not edit by hand
S3method(print,foo)
export(print.foo)
Run Code Online (Sandbox Code Playgroud)
我从这个想法哈德利的意见上有出口非-S3-方法函数.
的名称。如果你使用
# Generated by roxygen2: do not edit by hand
S3method(print,foo)
export(print.foo)
Run Code Online (Sandbox Code Playgroud)
它明确地使用export()
特定的指令与提供的function.name
. 然后我测试了你是否可以将它与更模糊的@export
标签结合起来生成一个S3method()
指令,瞧!有用。
但是,我会注意到,据我所知,在任何地方都没有记录能够确定地执行此操作,因此有可能在某个时候停止工作,甚至可能没有警告。如果这是您想要确保存在和/或已在某处记录的功能,我建议在他们的 GitHub 存储库中打开一个问题。
我的回答是"不要那样做".用户可以methods(predict); getAnywhere('predict.myclass')
或mypackage:::predict.myclass
.用户有一个学习曲线,但使用您的方法掌握这一点有助于用户导航所有方法.不导出方法的原因是它不是直接调用的,它会使搜索路径混乱不必要的符号(在提示符下键入的每个符号,例如,ls()
必须通过查看返回的所有环境中的对象来找到by search()
,和像你这样的用户软件包位于搜索开始和这些常用函数的名称解析之间.
归档时间: |
|
查看次数: |
2951 次 |
最近记录: |