【问题标题】:devtools::check fails because of vignette buildingdevtools::check 由于小插图构建而失败
【发布时间】:2017-04-05 05:41:34
【问题描述】:

我正在开发一个包并考虑在其中包含一个小插图。我使用 RStudio 进行包开发,并按照 Hadley Wickam 的说明使用 Rmarkdownknitr 或编写小插图。

当从 Rstudio 按下 knit 时,我能够编译小插图,但命令 devtools::check() 返回错误:

==> devtools::check(cleanup = FALSE)

Updating mypackage documentation
Loading mypackage
Setting env vars ---------------------------------------------------------------
CFLAGS  : -Wall -pedantic
CXXFLAGS :-Wall -pedantic
Building mypackage ---------------------------------------------------------------
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file
--no-environ  \   --no-save --no-restore --quiet CMD build  \   '/Volumes/Stockage/Dropbox/R/Packages/mypackage' --no-resave-data  \
--no-manual 

* checking for file ‘/Volumes/Stockage/Dropbox/R/Packages/mypackage/DESCRIPTION’ ... OK
* preparing ‘mypackage’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* installing the package to build vignettes
* creating vignettes ...
ERROR Error: processing vignette 'mypackage-vignette.Rmd' failed with diagnostics: It seems you should call rmarkdown::render() instead of knitr::knit2html() because mistral-vignette.Rmd appears to be an R Markdown v2 document.
Execution halted
Error: Command failed (1)
In addition: Warning message:
`cleanup` is deprecated
Execution halted

Exited with status 1.

我应该做什么或改变什么?我知道这只是支票。

会话信息:

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_2.1.0     foreach_1.4.3     knitr_1.14        rmarkdown_1.2    
[5] mistral_2.2.1    

【问题讨论】:

    标签: r package cran vignette


    【解决方案1】:

    以下错误消息具有误导性,已在 knitr 的更高版本中修复:

    错误错误:处理 vignette 'mypackage-vignette.Rmd' 诊断失败:您似乎应该调用 rmarkdown::render() 而不是 knitr::knit2html(),因为 misral-vignette.Rmd 似乎是 R Markdown v2 文档。

    出问题的不是小插图引擎knitr::rmarkdown。这个小插曲是正确的。问题是您还必须在包的DESCRIPTION 文件中将rmarkdown(除了knitr)添加到Suggests,否则在R CMD check 期间,rmarkdown 包将不会'不可用,因此 knitr 将退回到knit2html() 来构建小插图,但knit2html() 看到一个应该由rmarkdown::render() 编译的Rmd 文档,所以它抛出了一个错误。

    小插图引擎knitr::rmarkdown 依赖于rmarkdown,因此rmarkdown 需要出现在Suggests 中的DESCRIPTION 中。同样,如果小插图引擎需要其他包,则必须将这些包指定为被检查包的(硬或软)依赖项。

    这个问题的原始答案提到了小插图引擎rmarkdown::render。这不是一个有效的小插图引擎,不应使用。

    【讨论】:

    • 澄清:这是 Rmd YAML 标头中正确的小插图标记部分,用于在构建包时触发小插图的构建:%\VignetteEngine{rmarkdown::render}
    • 我遇到了同样的错误。仅仅设置“%\VignetteEngine{rmarkdown::render}”是不够的,还需要在DESCRIPTION文件中做两处修改: VignetteBuilder: knitr -->VignetteBuilder: rmarkdown Suggests: knitr, BiocStyle --> Suggests: knitr, BiocStyle, rmarkdown 在我看来,knitr 中一定有一个错误导致了这种情况。有谁知道为什么要切换到 rmarkdown::render?如果有人想研究它,很高兴提供一个可重现的例子。
    • 总而言之:此消息是因为您的计算机上没有软件包。通过在您的说明中将它们标记为“进口:”,在这种情况下,您将收到一条错误消息;如果它们在“Suggests:”中列出,devtools::document() 将不会出现错误消息。
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2017-11-05
    • 2019-08-31
    • 2017-08-14
    • 2015-09-04
    • 2021-09-02
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多