ПРИМЕЧАНИЕ или ПРЕДУПРЕЖДЕНИЕ от проверки пакета, когда README.md содержит изображения

У меня есть пакет с README.Rmd, который я передаю rmarkdown::render() для создания README.md, и каталог README_files, содержащий изображения в README.md. Это похоже на дерево ниже.

README_files не является стандартным каталогом пакетов, поэтому, если его нет в .Rbuildignore, проверка пакета с R CMD check показывает примечание:

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

Но включение каталога в .Rbuildignore приводит к предупреждению тогда и только тогда, когда проверяется пакет --as-cran. IIUC Pandoc пытается сгенерировать HTML из README.md, но изображения недоступны в игнорируемом каталоге 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


person effel    schedule 22.05.2017    source источник
comment
Кажется, стандарт заключается в том, чтобы просто поместить эти изображения в верхний каталог, см., например. ggplot2 или ggraph.   -  person Axeman    schedule 22.05.2017
comment
О, я предполагал, что файлы png в верхнем каталоге также будут генерировать ПРИМЕЧАНИЕ. Я попробую.   -  person effel    schedule 22.05.2017
comment
???? Я не понимаю, как, например. ggplot2 избегает примечания или предупреждения. Я получаю примечание, когда помещаю файлы png в каталог верхнего уровня, и предупреждение, когда я добавьте их в .Rbuildignore.   -  person effel    schedule 22.05.2017


Ответы (3)


Текущее предпочтительное решение (по крайней мере, используемое ggplot2) состоит в том, чтобы хранить изображения в man/figures/. Итак, в файле README.Rmd включите что-то вроде следующего фрагмента установки.

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

Таким образом, образы спрятаны в месте, которое не будет генерировать ошибки проверки крана, но они по-прежнему являются частью пакета. Таким образом, вам не нужно хранить их в другом месте или использовать вызовы png::readPNG.

person Rob Hyndman    schedule 02.12.2017
comment
Я считаю, что это лучший ответ, но к этому вопросу относится только третий вариант (fig.path = ...). - person rcorty; 13.03.2018

Есть несколько вариантов. Обновление: я думаю, что решение Роба Хайндмана теперь лучше, чем то, что я здесь перечисляю.

  1. Сохраните изображение где-нибудь в Интернете и включите URL-адрес в файл README.
  2. Как отметил @Axeman, вы можете следовать подходу ggplot2, сохраняя изображения на верхнем уровне и упоминая их в .Rbuildignore.
  3. Вы можете сохранить их в inst/image и использовать png::readPNG(system.file("image/yourpic.png", package = "yourpkg")) для чтения. Затем покажите это в README, используя график.
person Richie Cotton    schedule 22.05.2017
comment
Спасибо. (1) хорошо работает для меня здесь и (3) может быть хорошим вариантом. Как ни странно, я не могу заставить (2) работать, хотя, по-видимому, это работает для ggplot. Это та же проблема, что и когда они находятся в папке; Я получаю NOTE Non-standard file/directory found at top level: ..., если они не находятся в .Rbuildignore, и в этом случае я получаю предупреждение о том, что файл не найден от Pandoc. - person effel; 22.05.2017
comment
Я не думаю, что этот вопрос действительно решен. (1) Будет работать, но тогда он не упакован по-настоящему — другие могут читать README.md только при наличии подключения к Интернету. (2) Я не думаю, что это работает, потому что, если я поделюсь .tar.gz моего пакета, а кто-то распаковает его и установит, в README.md не будет изображений. (3) Это требует ручного изменения вещей после вязания и не будет воспроизведено, если я внесу изменения в README.rmd. - person rcorty; 13.03.2018
comment
кроме того, readPNG выгрузит кучу нечетного html, а не добавит тег html img. Для преодоления этого может быть опция вязания кусков, но без дополнительных данных я боюсь, что не вижу ни одного из вышеперечисленных вариантов работы. - person Jack Wasey; 19.07.2018