Как отобразить графические изображения в Rmarkdown через цикл for? - PullRequest
0 голосов
/ 12 июня 2018

Я обрабатываю список svg для печати в html-документе.Я использую пакет magick, хотя я открыт для использования других пакетов / решений.Приведенный ниже код является моей попыткой сделать мой HTML-документ.Однако вместо рендеринга svg в html-файл он просто печатает метаданные в документе.Есть ли способ преодолеть это поведение?

---
title: "My Test Report"
author: "Nicholas Hayden"
date: "6/12/2018"
output: html_document
---

```{r setup, set-options, include=FALSE, warning=FALSE}
library(rsvg)
library(magick)

paths <- c(
"~/path/to/my1.svg",
"~/path/to/my2.svg")

for (i in 1:length(paths)) {
  print(image_read_svg(paths[i]))
}
```

РЕДАКТИРОВАТЬ:

Некоторые примеры, которые освещают проблему.

Команда Rmd:

![]("~/path/to/my1.svg") дает сбой и выдает ...

File "/Users/nicholashayden/Desktop/path/to/my1.svg" not found in resource path
Error: pandoc document conversion failed with error 99

Как указал @mikeck.Это может быть проблемой пути.Однако попытка без ~ приводит к той же ошибке.


Обычный текст html <img src="/Users/nicholashayden/path/to/my1.svg"> помещает изображение в html-документ, в то время как версия ~ дает сбой с той же ошибкой, что иprevious.


Метод knitr::include_graphics() создает пробел либо с абсолютным путем, либо путем с ~


Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я думаю, что нашел решение этой проблемы, и это немного псевдо-решение, которое выполняет задачу, но без объяснения основного механизма, который породил проблему.

Согласно документации knitr::include_graphics()аргумент path - это A character vector of image paths - акцент на vector .Мы можем отобразить файлы .svg без magick и просто использовать в ссылках в примере приведенный ниже код.


# From example
paths <- c(
"/Users/nicholashayden/path/to/my1.svg",
"/Users/nicholashayden/path/to/my2.svg")

# Solution
knitr::include_graphics(paths)

Таким образом, мы можем избежать использованияfor цикл, который по какой-то причине вызвал эту проблему.Однако это не будет работать с ~ в строке пути.Моя проблема не обращала внимания на и , предполагая аргументы в функции knitr::include_graphics().Надеется, что это поможет любому в будущем.

0 голосов
/ 12 июня 2018

Я думаю, что вы хотите использовать include_graphics:

```{r}
for (i in 1:length(paths)) {
  print(knitr::include_graphics(paths[i]))
}
```
...