Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
开发工具::文档与roxygen2::roxygenize_R_Devtools_Roxygen2 - Fatal编程技术网

开发工具::文档与roxygen2::roxygenize

开发工具::文档与roxygen2::roxygenize,r,devtools,roxygen2,R,Devtools,Roxygen2,不久前,我在某个地方读到,devtools::document比roxygen2::roxygenize更适合“复杂的包/情况”(这是我记得的),但不幸的是,我现在找不到链接,当时我没有加深 查看各自的帮助页面,我不清楚如何操作,所以我的问题是 is:如果有时间,最好使用devtools::document而不是 roxygen2::roxygenize,在什么情况下?什么样的包裹 谢谢,卢卡你在回忆: Roxygen对源代码进行实时分析:它加载包中的所有代码,因此它可以使用R环境中的值创建文档

不久前,我在某个地方读到,
devtools::document
roxygen2::roxygenize
更适合“复杂的包/情况”(这是我记得的),但不幸的是,我现在找不到链接,当时我没有加深

查看各自的帮助页面,我不清楚如何操作,所以我的问题是 is:如果有时间,最好使用
devtools::document
而不是
roxygen2::roxygenize
,在什么情况下?什么样的包裹

谢谢,卢卡

你在回忆:

Roxygen对源代码进行实时分析:它加载包中的所有代码,因此它可以使用R环境中的值创建文档,而不仅仅是源代码。但是,模拟软件包加载通常是相当棘手的,因此使用roxygen有两种方法:

  • roxygen2::roxygenise()只是源代码R/目录中的所有文件

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

如果您有一个简单的包,那么可以使用roxygenise(),但对于更复杂的内容,我建议您使用document()

您可以在
document
调用
roxygenise
(通过
devtools:::document\u 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>
>文档
函数(pkg=“.”,clean=FALSE,roclets=c(“collate”,“namespace”,
“rd”),重新加载=真)
{
如果(!已安装(“roxygen2”,3)){
停止(“请安装最新的roxygen2”,call.=FALSE)
}

pkg就在:
roxygen2::roxygenise()只在R/目录中获取所有文件
devtools::document()在R/目录中获取所有文件,在src/目录中编译源代码,在data/目录中加载数据,并且通常准确地模拟包加载
。“如果您有一个简单的软件包,可以使用roxygenise(),但对于更复杂的内容,我建议您使用document()。“这里并没有最大的区别——这是因为devtools如何模拟软件包加载。@hadley可以随意发布一个更正确的答案,或者编辑您想要的任何内容。除了复制
load\u all()
(以及它调用的所有
devtools:::*
函数)的定义之外,我看不出您怎么能把这一点说得更清楚。