How to automate nested sections in Rmds which include text, maps and tables
我发现了几个示例(如何使用R提取SQL文件的内容,
使用循环在rmarkdown中生成文本部分,
使用R)在Rmarkdown中自动生成预格式化的文本,但没有
就我而言,适用于包含数字的嵌套部分。预期输出:
看来,我需要某种方式来处理所包含的代码块(例如,正确地
") ... cat("```\
")
编辑:我在这里找到了它,但仍然无法正常工作
1 2 3 4 5 6 7 | kexpand <- function(chunkname, fig.width, fig.height) { cat(knitr::knit(text = knitr::knit_expand(text = sprintf("```{r %s, fig.width=%s, fig.height=%s}\ .chunk_code\ ", chunkname, fig.width, fig.height)))) } |
,然后在大块中:
1 2 3 4 5 6 7 | .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) |
编辑2:有一个相关的问题。尽管它似乎很接近,但仍然无法正常工作。另请参阅此处使用的方法,因为我有嵌套列表-我不希望所有数字都相邻。
所有部分均包含相同类型的图形,但是内容当然会发生变化。在下面找到
- 我到目前为止取得的最好成绩
- 参考Rmd,显示已删除的输出,但带有复制粘贴块
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | --- 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}\ ")) cat("##### Map\ ") # code // cat("```{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[i]) cat("```\ ") # // cat("##### Tabelle\ ") # code // cat("```{r}\ ") DT::datatable(data.frame(x = 1, y = ranges[i], stringsAsFactors = FALSE), rownames = FALSE) cat("```\ ") # // } ``` ### 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}\ ")) cat("##### Karte\ ") # code // cat("```{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[i]) cat("```\ ") # // cat("##### Tabelle\ ") # code // cat("```{r}\ ") DT::datatable(data.frame(x = 1, y = ranges[i], stringsAsFactors = FALSE), rownames = FALSE) cat("```\ ") # // } ``` |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | --- 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) ``` |
来自xfun :: session_info('knitr')
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
尝试类似
的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | --- 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)) leaflet() DT::datatable(data.frame()) ``` # 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}\ ")) cat("##### Map\ ") # code // cat("```{r, fig.width=8.4, fig.height=7}\ ") leaflet() %>% addTiles() %>% knitr::knit_print() %>% cat() cat("```\ ") # // cat("##### Tabelle\ ") # code // cat("```{r}\ ") DT::datatable(data.frame(x = 1, y = ranges[i], stringsAsFactors = FALSE), rownames = FALSE) %>% knitr::knit_print() %>% cat() cat("```\ ") # // } ``` |