devtools::check 由于小插图构建而失败

devtools::check fails because of vignette building

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

从 Rstudio 中按 knit 时我可以编译小插图,但是命令 devtools::check() returns 出现错误:

==> 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.

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

Session 信息:

> 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    

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

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.

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

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

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