gpt4 book ai didi

r - 如何使用 knit 在 RMD 中循环渲染传单 map

转载 作者:行者123 更新时间:2023-12-02 04:21:54 24 4
gpt4 key购买 nike

我目前正在努力让knitr渲染我的传单 map ,从集合中获取以正确显示在渲染的RMD html输出中。我已经意识到循环集合并使用 RMD/knitr 生成图形输出时的一些潜在问题,但我仍然无法弄清楚如何使我的示例适用于传单 map 。

可重现的工作示例 (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)。但是当我尝试对传单 map 做同样的事情时,它根本不起作用。没有渲染任何单个 map :

可重现的失败示例 (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 渲染同一张 map 4 次,显示不同的标题(“地 block 编号 1-4”)。但输出根本不渲染任何 map 。输出如下所示:

enter image description here

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

enter image description here

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

enter image description here

我已经尝试过

  • 将传单语句转换为赋值语句
  • 引入 cat() 或 print() 命令来强制输出 map
  • 在 map 输出部分之前和/或之后使用额外的换行符“\n”
  • 摆弄来自fig.show结果的“asis”指令

没有任何效果。有人知道这里吗?

最佳答案

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

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

关于r - 如何使用 knit 在 RMD 中循环渲染传单 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com