r - 使用 roxygen2 v4 导出名称中带有点的非 S3 方法

标签 r roxygen2

由于roxygen2版本 4.0.0 , @S3method标签已被弃用,取而代之的是使用 @export .

该包现在尝试检测函数是否为 S3 方法,并自动添加行 S3method(function,class)NAMESPACE如果它认为它是一个文件。

问题是,如果函数不是 S3 方法但其名称包含 .然后 roxygen 有时会出错,并在不应该的时候添加该行。

有没有办法告诉 roxygen 一个函数不是 S3 方法?

根据要求,这是一个可重现的示例。

我有一个导入 R.oo 的包, 函数名为 check.arg .

library(roxygen2)
package.skeleton("test")
cat("Imports: R.oo\n", file = "test/DESCRIPTION", append = TRUE)
writeLines(
  "#' Check an argument 
#' 
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export
check.arg <- function(...) 0",
  "test/R/check.arg.R"
)
roxygenise("test")

现在命名空间包含行 S3method(check,arg) .
checkR.oo 中的 S3 泛型,所以 roxygen 试图变得聪明并猜测我想要 check.arg成为 S3 方法。不幸的是,这些功能是不相关的,所以我不知道。

(为了抢占我只是重命名 check.arg 的建议:这是其他人编写的遗留代码,我创建了一个 checkArg 替换,但我需要将 check.arg 作为不推荐使用的函数保留为兼容性。)

最佳答案

正如弗里克先生所评论的那样,将完整的函数名称附加到 roxygen 行可以正常工作。如果我将行更改为:

#' @export check.arg

然后 NAMESPACE文件包含:
export(check.arg)

关于r - 使用 roxygen2 v4 导出名称中带有点的非 S3 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594507/

相关文章:

r - lme4 包中 anova() 的错误

r - 是否可以在 ggplot2 堆叠条中的堆叠之间放置空间?

R:跳过在 CRAN R CMD 检查上运行的小插图

r - 将文件名拆分为名称、扩展名

roxygen2 如何不运行示例文件

r - 赋值函数文档失败 R CMD CHECK

r - R Dataframe 中的交叉表

r - 构建 R 包——错误 : example requires a value

regex - 如何在包中添加 roxygen @export 所有功能

R 对象文档 : Package documentation as first item