我正在使用roxygen来创建自己的包。 我有一个函数会引起问题:
##' extract.sig.metadata
##' @param foo bar
##' @author me
##' @export
extract.sig.metadata <- function(foo){
# does stuff
}
我已经创建了我的软件包框架(使用devtools中的create(my-package)命令),并使用document()处理roxygen标签。但是,当我尝试安装我的软件包时,安装失败,错误信息如下:
... * installing help indices ** building package indices ** testing if installed package can be loaded Error: 加载my-package包时未找到'extract'对象。 Error: 软件包加载失败 执行已停止
我相信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标签有关,但我不知道如何充分使用它使其正常工作。谢谢!!!
@export extract.sig.metadata
而不是@export
可以解决它! - Hillary Sanders