gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:33:25 26 4
gpt4 key购买 nike

由于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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com