Since roxygen2
版本4.0.0
, the @S3method
标签已被弃用,转而使用@export
.
该包现在尝试检测函数是否是 S3 方法,并自动添加行S3method(function,class)
to the 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)
.
check
是 S3 通用的R.oo
,所以 roxygen 试图变得聪明并猜测我想要check.arg
成为 S3 方法。不幸的是,这些功能是不相关的,所以我不知道。
(为了抢占我刚刚重命名的建议check.arg
:这是其他人编写的遗留代码,我创建了一个checkArg
替换,但我需要离开check.arg
作为为了兼容性而弃用的函数。)