前段时间我已经在devtools::document
优于roxygen2::roxygenize
的某个地方阅读了#34}复杂的套餐/参与者" (这是我记得的),但不幸的是我现在找不到链接,当时我没有加深。
查看相应的帮助页面,我不清楚如何,所以我的问题
是:如果有时候使用devtools::document
而不是使用roxygen2::roxygenize
更好
{{1}},如果是这样的话?哪种包裹?
谢谢,卢卡
答案 0 :(得分:7)
您正在回忆roxygen2 README:
Roxygen对源代码进行实时分析:它会加载包中的所有代码,因此它可以使用R环境中的值创建文档,而不仅仅是源代码。但是,一般来说,模拟包装加载是相当棘手的,因此有两种方法可以使用roxygen:
roxygen2 :: roxygenise()只是来源R /目录中的所有文件
devtools :: document()获取R /目录中的所有文件,编译src /目录中的源代码,将数据加载到data /目录中,并且通常可以准确地模拟包加载。
如果你有一个简单的包,你可以使用roxygenise(),但是对于更复杂的东西,我建议你使用document()。
在执行了大量其他操作后,您可以在document
调用roxygenise
(通过devtools:::document_roxygen3
)中看到这种区别:
> document
function (pkg = ".", clean = FALSE, roclets = c("collate", "namespace",
"rd"), reload = TRUE)
{
if (!is_installed("roxygen2", 3)) {
stop("Please install latest roxygen2", call. = FALSE)
}
pkg <- as.package(pkg)
message("Updating ", pkg$package, " documentation")
man_path <- file.path(pkg$path, "man")
if (!file.exists(man_path))
dir.create(man_path)
if (clean) {
file.remove(dir(man_path, full.names = TRUE))
}
if (!is_loaded(pkg) || (is_loaded(pkg) && reload)) {
try(load_all(pkg, reset = clean))
}
document_roxygen3(pkg, roclets)
clear_topic_index(pkg)
invisible()
}
<environment: namespace:devtools>
> devtools:::document_roxygen3
function (pkg, roclets)
{
with_envvar(r_env_vars(), with_collate("C", roxygen2::roxygenise(pkg$path,
roclets = roclets, load_code = pkg_env)))
}
<environment: namespace:devtools>