【发布时间】:2018-05-22 12:16:46
【问题描述】:
我目前正在努力让 knitr 渲染我的传单地图,这些地图取自集合以正确显示在渲染的 RMD html 输出中。我已经意识到循环通过集合和使用 RMD/knitr 生成图形输出时的一些潜在问题,但我仍然不知道如何使我的示例适用于传单地图。
可重现的工作示例(Test_1.Rmd):
---
title: "test1"
author: "phabee"
date: "22 Mai 2018"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## Title 1
```{r, fig.show='asis', echo=FALSE, results='asis'}
for (i in 1:4) {
cat("### Plot Number ", i, "\n")
plot(1,1)
# use plot.new() here to force rendering of potential plot-duplicates
plot.new()
cat("\n\n")
}
```
上面的示例按预期呈现(至少在添加 plot.new() 之后,我从 Freedomtowin 学到了 here)。但是当我尝试对传单地图做同样的事情时,它根本不起作用。没有渲染单个地图:
可重现的失败示例 (Test_2.Rmd)
---
title: "test2"
author: "phabee"
date: "22 Mai 2018"
output: html_document
---
```{r setup, include=FALSE}
library(leaflet)
knitr::opts_chunk$set(echo = TRUE)
```
## Title 1
```{r, fig.show='asis', echo=FALSE, results='asis'}
for (i in 1:4) {
cat("### Map Number ", i, "\n")
leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")
cat("\n")
}
```
我希望第二个 Rmd 渲染同一张地图 4 次,显示不同的标题(“Plot Number 1-4”)。但是输出根本不渲染任何地图。输出如下:
在检查生成的 html-output 输出后,可以看出根本没有渲染任何内容,这不仅仅是可见性问题:
但是,当我通过“突出显示”代码并按 ctrl-Enter 直接评估第二个 Rmd 中的传单部分时,地图会按预期呈现:
我已经试过了
- 将传单语句转换为赋值语句
- 引入 cat() 或 print() 命令强制映射输出
- 在地图输出部分之前和/或之后使用额外的换行符“\n”
- 摆弄来自 fig.show 或 results 的“asis”指令
没有任何影响。有人知道这里有线索吗?
【问题讨论】:
-
我曾想过将
saveWidget(m, file = "./m.html")和htmltools::includeHTML("./m.html")结合使用,但我无法实现。 -
包
widgetframe可能会工作.. -
使用小部件框架也不起作用,摆弄保存 html 似乎没有选择;我当前的工作但超级难看的解决方法是为前 n 次迭代添加显式部分,以生成具有 i 的具体值的地图输出。
标签: r loops leaflet r-markdown knitr