【问题标题】:Looping through images in directory: ioslides遍历目录中的图像:ioslides
【发布时间】:2018-01-09 20:56:22
【问题描述】:

我正在自动化演示,并希望为目录中的每个图像创建一张幻灯片(图像文件名都是具有三个字符名称的 .png 文件)。

这可以根据需要测试带有标题和图像的幻灯片是否会呈现:

```{r, results="asis", out.width="900px"}
plot_files <- list.files(paste0(mydir, "/plots"))
i <- 1
cat("\n\n##", substr(plot_files[i], 1, 3), "\n\n", sep="")
knitr::include_graphics(paste0(dir, "/plots/", plot_files[i]))
```

但是当我将上面的内容包装成 for 循环时...

```{r, results="asis", out.width="900px"}
plot_files <- list.files(paste0(mydir, "/plots"))
for (i in 1:length(plot_files)) {
  cat("\n\n##", substr(plot_files[i], 1, 3), "\n\n", sep="")
  knitr::include_graphics(paste0(dir, "/plots/", plot_files[i]))
}
```

...每张幻灯片都正确生成了标题,但图像不再呈现。任何想法为什么将代码包装在循环中会导致图像渲染失败?

【问题讨论】:

标签: r knitr r-markdown pandoc ioslides


【解决方案1】:

我认为您可以对图像使用 (Pandoc) Markdown 语法,而不是 knitr::include_graphics(),例如

cat('![](', paste0(dir, "/plots/", plot_files[i]), '){width=900px}\n\n', sep = '')

【讨论】:

  • 谢谢...但是我在使用![](path) 格式时所做的各种修改图像大小的尝试都无法改变图像大小。
  • 无论是在块头还是在循环本身中对图像大小进行修改都没有区别。最终起作用的是 html 本身:cat("&lt;img src=\"", dir, "/plots/", plot_files[i]), "\" width=\"1000px\" /&gt;", sep="")
  • 请注意,我的回答中有{width=900px}。它应该适用于相当新的 Pandoc 版本。如果您使用的不是最新版本的 RStudio,请检查 rmarkdown::pandoc_version()。更多信息:pandoc.org/MANUAL.html#images
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 2016-01-22
  • 2016-10-25
  • 2016-07-24
  • 2011-08-05
  • 1970-01-01
相关资源
最近更新 更多