当README.md包含图像时,从包检查中注意或警告

时间:2017-05-22 13:09:52

标签: r r-markdown pandoc

我有一个README.Rmd的包裹,我传递给rmarkdown::render() 生成README.md和目录README_files,其中包含README.md中的图片。这看起来像下面的树。

README_filesnot a standard package directory,因此,如果它不在.Rbuildignore中,则使用R CMD check检查包会显示一条注释:

* checking top-level files ... NOTE Non-standard file/directory found at top level: README_files

但是,当且仅当检查包.Rbuildignore时,包括--as-cran中的目录会导致警告。 IIUC Pandoc尝试从README.md生成HTML,但图像不可用,位于忽略的README_files目录中。

Conversion of ‘README.md’ failed:
pandoc: Could not fetch README_files/unnamed-chunk-14-1.png
README_files/unnamed-chunk-14-1.png: openBinaryFile: does not exist (No such file or directory)

有没有办法在这里进行干净的检查--as-cran

├── README_files │   └── figure-markdown_github │   ├── unnamed-chunk-14-1.png │   ├── unnamed-chunk-15-1.png │   ├── unnamed-chunk-16-1.png │   ├── unnamed-chunk-26-1.png │   └── unnamed-chunk-27-1.png ├── README.md ├── README.Rmd

3 个答案:

答案 0 :(得分:13)

当前首选解决方案(至少由ggplot2使用)是将图像存储在man/figures/中。因此,在README.Rmd文件中,包含类似以下设置块的内容。

```{r, echo = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-"
)
```

将图像隐藏在一个不会产生曲目检查错误的地方,但它们仍然是包的一部分。因此,您不必将它们存储在其他位置或使用png::readPNG的调用。

答案 1 :(得分:3)

有几个选择。更新:我认为Rob Hyndman的解决方案现在比我在此列出的内容更好。

  1. 将图像存储在某处,并在README中包含URL。
  2. 正如@Axeman所说,您可以按照ggplot2方法将图像存储在顶层,并在.Rbuildignore中提及它们。
  3. 您可以将它们存储在inst/image中,然后使用png::readPNG(system.file("image/yourpic.png", package = "yourpkg"))进行阅读。然后使用绘图在README中显示它。

答案 2 :(得分:2)

我跟着http://r-pkgs.had.co.nz/release.html。将它们放在顶层并添加到.Rbuildignore时会出现同样的错误。

正如Richie建议的那样,在将图像添加到inst / image之后,并将其称为![](inst/image/README-unnamed-chunk-1-1.png)