5

我正在开发一个包,并考虑在其中包含一个小插图。我使用 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    
4

1 回答 1

9

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

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

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

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

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

于 2016-11-22T14:24:37.150 回答