如何使用 roxygen2 将 S3method 导出为方法和正常函数
How to export S3method both as method and normal function using roxygen2
那里有类似的、较旧的问题,但自从 roxygen2 版本 3.0.0 以来,情况发生了一些变化(正如我从其他问答中了解到的那样)。
我写了一个替代函数 format.Date
,我想将其作为方法和函数导出。
使用 @export 标签意味着 roxygen2 将其识别为打印的 S3 方法,并相应地注册它。当我加载我的包并打印一个日期对象时,我的方法被调用。到目前为止,还不错。
但是,当我调用 format.Date 时,我仍然得到正常的基本方法。当我使用 debugonce(format.Date)
时也会发生这种情况,'debug-mark' 在 base::format.Date 上设置,因此如果调用我的方法,则不会发生任何事情。或者,如果我想检查源代码:用户很难理解他使用 View(format.Date) 看到的不是执行的内容。
如果用户查看我的包我提供了哪些功能,format.Date 不存在。
所以我希望 format.Date 导出为 一个 S3 方法,以及一个名为 format.Date[ 的普通函数=30=]。为此,我希望我的 NAMESPACE 文件包含以下两行:
S3method(format,Date)
export(format.Date)
这在 roxygen2 中可行吗?我的印象是您可以在早期版本中执行此操作(因为您可以同时提供 @S3method/@method 和 @export),但我现在无法让它工作。
背景信息:roxygen2 版本 6.1.1 和 R 3.5.1,运行 在 Rstudio 1.1.453/MacOS 10.13.6 下
我找到的方法是
@exportS3Method
和明确的 @export
行。由于 roxygen2 经常变化,这可能会在未来发生变化:
#' @exportS3Method fortify
#' @export fortify.Date
手动拼写 NAMESPACE
内容(不添加其他 @export
或 @method
指令)
#' @rawNamespace S3method(fortify,Date)
#' export(fortify.Date)
两者都会生成包含以下行的 NAMESPACE
文件,第一行会生成 roxygen2 为您订购的东西。
S3method(fortify,Date)
export(fortify.Date)
那里有类似的、较旧的问题,但自从 roxygen2 版本 3.0.0 以来,情况发生了一些变化(正如我从其他问答中了解到的那样)。
我写了一个替代函数 format.Date
,我想将其作为方法和函数导出。
使用 @export 标签意味着 roxygen2 将其识别为打印的 S3 方法,并相应地注册它。当我加载我的包并打印一个日期对象时,我的方法被调用。到目前为止,还不错。
但是,当我调用 format.Date 时,我仍然得到正常的基本方法。当我使用 debugonce(format.Date)
时也会发生这种情况,'debug-mark' 在 base::format.Date 上设置,因此如果调用我的方法,则不会发生任何事情。或者,如果我想检查源代码:用户很难理解他使用 View(format.Date) 看到的不是执行的内容。
如果用户查看我的包我提供了哪些功能,format.Date 不存在。
所以我希望 format.Date 导出为 一个 S3 方法,以及一个名为 format.Date[ 的普通函数=30=]。为此,我希望我的 NAMESPACE 文件包含以下两行:
S3method(format,Date)
export(format.Date)
这在 roxygen2 中可行吗?我的印象是您可以在早期版本中执行此操作(因为您可以同时提供 @S3method/@method 和 @export),但我现在无法让它工作。
背景信息:roxygen2 版本 6.1.1 和 R 3.5.1,运行 在 Rstudio 1.1.453/MacOS 10.13.6 下
我找到的方法是
@exportS3Method
和明确的@export
行。由于 roxygen2 经常变化,这可能会在未来发生变化:#' @exportS3Method fortify #' @export fortify.Date
手动拼写
NAMESPACE
内容(不添加其他@export
或@method
指令)#' @rawNamespace S3method(fortify,Date) #' export(fortify.Date)
两者都会生成包含以下行的 NAMESPACE
文件,第一行会生成 roxygen2 为您订购的东西。
S3method(fortify,Date)
export(fortify.Date)