我正在使用 roxygen 创建自己的包。我有一个导致问题的函数:
##' extract.sig.metadata
##' @param foo bar
##' @author me
##' @export
extract.sig.metadata <- function(foo){
# does stuff
}
我已经创建了我的包骨架(使用 devtools 中的 create(my-package)),并且我使用了 document() 来处理 roxygen 标签。但是,当我尝试安装我的包时,它失败了:
... *安装帮助索引 ** 构建包索引 ** 测试是否可以加载已安装的包 错误:加载命名空间“my-package”时未找到对象“提取” 错误:加载失败 执行暂停
我很确定 roxygen 认为 extract.sig.metadata 是一种 S3 方法,即 export() 的一种特殊形式,但它没有找到函数 export(),所以它被破坏了。但这不是 s3 方法,它只是一个名为 extract.sig.metadata 的函数。如果我查看 Rd 代码,/usage 标记看起来很奇怪:
\usage{
\method{extract}{sig.metadata}(spec.df, var = "product_name",
ratio.cutoff = 0.001, prob.modifer = 3, frequency.cutoff = NA,
verbose = F, assign.to.global.env = FALSE, use.bigrams = T, clean = T,
ngram.dupe.n.cutoff = 0.1, max.obs = 10000)
}
如果我确实将名称更改为 extractSigMetadata,则问题在技术上已解决,并且 .Rd 代码会更改,
\usage{
extractSigMetadata(foo)
}
但是我真的不想更改我的函数的名称(我的包中有数十个函数存在相同的问题,并且它们被用于一堆脚本中 - 更改我的命名将是一个巨大的痛苦架构不是)。
---> 有谁知道我如何告诉 roxygen 这只是一个正常功能而不是奇怪的 s3 方法?我猜它与@method 标签有关,但我不知道如何正确使用它来完成这项工作。谢谢!!!