Как сделать листовки-карты в циклах в RMD с помощью knitr - PullRequest
0 голосов
/ 22 мая 2018

В настоящее время я борюсь за то, чтобы заставить knitr отображать мои листовки с картами, взятыми из коллекции, чтобы они правильно отображались в визуализированном html-выводе RMD.Я уже знаю о некоторых потенциальных проблемах при циклическом сборе коллекций и создании графического вывода с помощью 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 ).Но когда я пытаюсь сделать то же самое с листовками, это совсем не работает.Ни одна карта не отображается:

Воспроизводимый неудачный пример (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 раза одну и ту же карту,показывая разные названия («Сюжет № 1-4»).Но вывод не отображает никакой карты вообще.Вывод выглядит следующим образом:

enter image description here

После проверки сгенерированного вывода html-вывода видно, что ничего не отображается, ине просто проблема с видимостью:

enter image description here

Однако, когда я оцениваю секцию листовки во втором Rmd напрямую, «подсвечивая» код и нажимаяCtrl-Enter, карта отображается так, как и ожидалось:

enter image description here

Я уже пытался

  • преобразовать инструкцию листовки воператор присваивания
  • вводит команды cat () или print (), чтобы заставить вывод карты
  • поиграться с дополнительными символами новой строки '\ n' до и / или после секции вывода карты
  • возиться с директивами asis из fig.show или results

без какого-либо эффекта.У кого-нибудь есть подсказка?

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужно поместить вещи в tagList и распечатать этот список из чанка.Это просто использует настройки по умолчанию для fig.show и results;он также использует функцию htmltools::h3() для непосредственного преобразования заголовка в заголовок HTML, не используя маркер Markdown ###.(Вместо этого вы можете захотеть h2 или h4.)

---
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)
```
...