Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用knitr在RMDs中以循环方式渲染传单贴图_R_Loops_Leaflet_R Markdown_Knitr - Fatal编程技术网

如何使用knitr在RMDs中以循环方式渲染传单贴图

如何使用knitr在RMDs中以循环方式渲染传单贴图,r,loops,leaflet,r-markdown,knitr,R,Loops,Leaflet,R Markdown,Knitr,我目前正在努力让knitr渲染我的传单地图,这些地图取自一个集合,以正确显示在渲染的RMD html输出中。我已经意识到在使用RMD/knitr循环遍历集合并生成图形输出时可能出现的一些问题,但我仍然不知道如何使我的示例适用于传单地图 可复制工作示例(测试1.Rmd): --- title: "test1" author: "phabee" date: "22 Mai 2018" output: html_document --- ```{r setup, include=FALSE} kni

我目前正在努力让knitr渲染我的传单地图,这些地图取自一个集合,以正确显示在渲染的RMD html输出中。我已经意识到在使用RMD/knitr循环遍历集合并生成图形输出时可能出现的一些问题,但我仍然不知道如何使我的示例适用于传单地图

可复制工作示例(测试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中学到的)。但当我尝试用传单地图做同样的事情时,它根本不起作用。没有渲染单个贴图:

可再现的失败示例(测试2.Rmd)

我希望第二个Rmd渲染4次相同的地图,显示不同的标题(“图号1-4”)。但是输出根本不会渲染任何贴图。输出如下所示:

检查生成的html输出和输出后,可以看到根本没有呈现任何内容,这不仅仅是可见性问题:

但是,当我通过“突出显示”代码并按ctrl-Enter键直接评估第二个Rmd中的传单部分时,地图将按预期呈现:

我已经试过了

  • 将传单语句转换为赋值语句
  • 引入cat()或print()命令以强制贴图输出
  • 在映射输出部分之前和/或之后使用其他换行符“\n”
  • 在fig.show或results中的“asis”指令中来回摆弄

没有任何效果。这里有人有线索吗?

您需要将内容放入标记列表中,并从块中打印该列表。这只使用
fig.show
结果的默认设置
;它还使用
htmltools::h3()
函数直接将标题转换为HTML标题,而不使用Markdown
##
标记。(您可能需要
h2
h4

---
标题:“test3”
输出:html\u文档
---
```{r设置,include=FALSE}
图书馆(单张)
图书馆(htmltools)
knitr::opts_chunk$set(echo=TRUE)
```
##标题1
```{r echo=FALSE}
html%#添加默认的OpenStreetMap分幅
addMarkers(lng=174.768,lat=-36.852,popup=“R的诞生地”)
)
)
}
标记列表(html)
```

我想把
saveWidget(m,file=“./m.html”)
htmltools::includeHTML(“./m.html”)
结合起来,但我不能让它工作。package
widgetframe
可能工作。使用widgetframe也不起作用,摆弄保存html似乎没有选择;我目前的工作方法是为前n次迭代添加显式部分,以生成具有具体值i的贴图输出。我有一些类似的问题。也许你知道,发生了什么事?看,还有。我在Rmarkdown级别工作(首选)。
---
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")
}
```
---
title: "test3"
output: html_document
---

```{r setup, include=FALSE}
library(leaflet)
library(htmltools)
knitr::opts_chunk$set(echo = TRUE)
```

## Title 1

```{r echo=FALSE}
html <- list()
for (i in 1:4) {
  html <- c(html, 
            list(h3(paste0("Map Number ", i)),
                 leaflet() %>%
                 addTiles() %>%  # Add default OpenStreetMap map tiles
                 addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")  
                 )
            )
}
tagList(html)
```