Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NOTE or WARNING from package check when README.md includes images

I have a package with a README.Rmd that I pass to rmarkdown::render() producing README.md and a directory README_files, which contains images in README.md. This looks like the tree below.

README_files is not a standard package directory, so if it isn't in .Rbuildignore, checking the package with R CMD check shows a note:

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

But including the directory in .Rbuildignore leads to a warning, if and only if checking the package --as-cran. IIUC Pandoc tries to generate HTML from README.md, but the images are unavailable, in the ignored README_files directory.

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)

Is there any way to get a clean check --as-cran here?

├── 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

like image 917
effel Avatar asked May 22 '17 13:05

effel


3 Answers

The current preferred solution (at least as used by ggplot2) is to store the images in man/figures/. So in the README.Rmd file, include something like the following setup chunk.

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

That keeps the images tucked away in a place that won't generate cran check errors, but they are still part of the package. So you don't have to store them elsewhere or use calls to png::readPNG.

like image 90
Rob Hyndman Avatar answered Oct 17 '22 17:10

Rob Hyndman


There are a few options. Update: I think Rob Hyndman's solution is now better than the things I list here.

  1. Store the image online somewhere, and include the URL in the README.
  2. As @Axeman noted, you can follow the ggplot2 approach of storing the images at the top level, and mentioning them in .Rbuildignore.
  3. You can store them in inst/image, and use png::readPNG(system.file("image/yourpic.png", package = "yourpkg")) to read it. Then show it in the README using a plot.
like image 38
Richie Cotton Avatar answered Oct 17 '22 19:10

Richie Cotton


I followed http://r-pkgs.had.co.nz/release.html. same error when putting them in top level and add to .Rbuildignore.

As Richie suggested, after adding images to inst/image, and refer to as ![](inst/image/README-unnamed-chunk-1-1.png)

like image 2
Jun Cheng Avatar answered Oct 17 '22 17:10

Jun Cheng