Chr*_*oph 5 r knitr leaflet r-markdown
我找到了几个例子(如何使用 R 提取 SQL 文件的内容, 使用循环在 rmarkdown 中生成文本部分,使用 R在 Rmarkdown中 自动生成预格式化文本),但在我的情况下没有一个适用于嵌套部分,包括数字. 预期输出:
看来,我需要某种方法来处理包含的代码块(例如cat("```{r, fig.width=8.4, fig.height=7}\n") ... cat("```\n")正确处理,但我找不到方法。
编辑:我在这里找到了这个,但仍然无法使它工作
kexpand <- function(chunkname, fig.width, fig.height) {
cat(knitr::knit(text = knitr::knit_expand(text =
sprintf("```{r %s, fig.width=%s, fig.height=%s}\n.chunk_code\n",
chunkname, fig.width, fig.height))))
}
Run Code Online (Sandbox Code Playgroud)
然后在块中:
.chunk_code <- leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[i])
kexpand(i, 8.4, 7)
Run Code Online (Sandbox Code Playgroud)
编辑 2:有一个相关的问题。虽然它看起来很接近,但它仍然不起作用。另请参阅我在此处使用的方法,因为我使用了嵌套列表 -我不希望所有数字彼此相邻。
所有部分都包含相同类型的图形,但内容当然会发生变化。下面你找到一个
例子:
---
title: "The best I got"
author: "SQC"
date: "11 Juli 2019"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, fig.width=8.4, fig.height=7)
library(leaflet)
ranges <- paste0("section_", c(1:3))
```
# Title level 1
This is an R Markdown document.
## Title level 2 (tab) {.tabset}
### Title level 3 (tab) {.tabset}
```{r, echo = FALSE, results='asis'}
for (i in 1:length(ranges)) {
cat(paste0("#### Title level 4 `r ",
ranges[i], "` vs. `r ", ranges[i - 1], "` {.tabset}\n"))
cat("##### Map\n")
# code //
cat("```{r, fig.width=8.4, fig.height=7}\n")
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[i])
cat("```\n")
# //
cat("##### Tabelle\n")
# code //
cat("```{r}\n")
DT::datatable(data.frame(x = 1, y = ranges[i], stringsAsFactors = FALSE),
rownames = FALSE)
cat("```\n")
# //
}
```
### Title level 3 (tab) {.tabset}
```{r, echo = FALSE, results='asis'}
for (i in 1:length(ranges)) {
cat(paste0("#### `r ", ranges[i], "` vs. `r ", ranges[i - 1], "` {.tabset}\n"))
cat("##### Karte\n")
# code //
cat("```{r, fig.width=8.4, fig.height=7}\n")
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[i])
cat("```\n")
# //
cat("##### Tabelle\n")
# code //
cat("```{r}\n")
DT::datatable(data.frame(x = 1, y = ranges[i], stringsAsFactors = FALSE),
rownames = FALSE)
cat("```\n")
# //
}
```
Run Code Online (Sandbox Code Playgroud)
---
title: "Reference"
author: "SQC"
date: "11 Juli 2019"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(leaflet)
ranges <- paste0("section_", c(1:4))
```
# Title level 1
This is an R Markdown document.
## Title level 2 (tab) {.tabset}
### Title level 3 (tab) {.tabset}
#### Title level 4 `r ranges[2]` vs. `r ranges[1]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[2])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[2], stringsAsFactors = FALSE),
rownames = FALSE)
```
#### Title level 4 `r ranges[3]` vs. `r ranges[2]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[3])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[3], stringsAsFactors = FALSE),
rownames = FALSE)
```
#### Title level 4 `r ranges[4]` vs. `r ranges[3]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[4])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[4], stringsAsFactors = FALSE),
rownames = FALSE)
```
### Title level 3 (tab) {.tabset}
#### Title level 4 `r ranges[2]` vs. `r ranges[1]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[2])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[2], stringsAsFactors = FALSE),
rownames = FALSE)
```
#### Title level 4 `r ranges[3]` vs. `r ranges[2]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[3])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[3], stringsAsFactors = FALSE),
rownames = FALSE)
```
#### Title level 4 `r ranges[4]` vs. `r ranges[3]` {.tabset}
##### Karte
```{r, fig.width=8.4, fig.height=7}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addLayersControl(baseGroups = c("OSM", "Toner Lite")) %>%
addCircleMarkers(lat = 47, lng = 9, popup = ranges[4])
```
##### Tabelle
```{r}
DT::datatable(data.frame(x = 1, y = ranges[4], stringsAsFactors = FALSE),
rownames = FALSE)
```
Run Code Online (Sandbox Code Playgroud)
来自 xfun::session_info('knitr')
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200), RStudio 1.1.453
Locale:
LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 LC_MONETARY=German_Switzerland.1252
LC_NUMERIC=C LC_TIME=German_Switzerland.1252
Package version:
evaluate_0.14 glue_1.2.0 graphics_3.5.1 grDevices_3.5.1 highr_0.7 knitr_1.23 magrittr_1.5
markdown_0.8 methods_3.5.1 mime_0.5 stats_3.5.1 stringi_1.2.3 stringr_1.3.1 tools_3.5.1
utils_3.5.1 xfun_0.7 yaml_2.1.19
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |