r语言 - 如何通过 for 循环在 Rmarkdown 中显示绘图图像?



我正在处理要打印到 html 文档的svg列表。我正在使用magick包,以为我愿意使用其他包/解决方案。下面的代码是我尝试呈现我的 html 文档。但是,它不是将svg呈现到 html 文件中,而是简单地将 metadeta 打印到文档中。有没有办法克服这种行为?

---
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所指出的。这可能是路径问题。但是,在没有~的情况下尝试会产生相同的错误。


<img src="/Users/nicholashayden/path/to/my1.svg">的 html 纯文本将图像放置在 html 文档中,而~版本失败,并出现与上一个相同的错误。


knitr::include_graphics()方法使用绝对路径或具有~的路径生成空格


我想你想使用include_graphics

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

我想我找到了这个问题的解决方案,这是一个伪解决方案,可以完成任务,但没有解释产生问题的潜在机制。

根据knitr::include_graphics()文档,path参数是一个A character vector of image paths- 强调向量。我们可以不magick地显示.svg文件,只需在示例中的引用中使用下面的代码。


# 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()函数中忽略假设参数。希望这对将来的任何人都有帮助。

最新更新