首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >devtools::document vs roxygen2 2::roxygenize

devtools::document vs roxygen2 2::roxygenize
EN

Stack Overflow用户
提问于 2014-08-03 11:14:52
回答 1查看 1.1K关注 0票数 4

不久前,我在某个地方读到devtools::documentroxygen2::roxygenize更适合“复杂的包/站点”(这是我记得的),但不幸的是,我现在找不到链接,也没有深入到那个时候。

查看各自的帮助页,我不清楚如何使用,所以我的问题是:如果有时使用devtools::document而不是roxygen2::roxygenize更好,当情况是这样的时候?什么样的包裹?

谢谢你,卢卡

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-03 11:22:35

你在回忆 README

RO2对源代码进行实时分析:它加载包中的所有代码,因此它可以使用R环境中的值创建文档,而不仅仅是源代码。但是,在一般情况下,模拟包加载是相当困难的,因此有两种方法可以用roxygen来完成:

  • roxygen2::roxygenise()仅来源于R/目录中的所有文件

  • devtools::document()来源于R/目录中的所有文件,编译src/目录中的源代码,在data/目录中加载数据,并通常准确地模拟包加载。

如果您有一个简单的包,可以使用roxygenise(),但是对于任何更复杂的东西,我建议您使用document()。

在执行了一系列其他内容之后,您可以在document调用roxygenise (通过devtools:::document_roxygen3)时看到这种区别:

代码语言:javascript
复制
> 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>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25104108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档