Я пишу приложение в уценке R с помощью Shiny. На одной странице «Исследовать» я показывал несколько интерактивных сюжетов, а на другой «О программе» я писал описание приложения и его использования.
Я хочу, чтобы этот раздел также был файлом README в репозитории GitLab, куда он будет отправлен, поэтому он должен быть в уценке. Мне интересно, есть ли способ вызвать этот файл README из документа R markdown, поэтому мне не нужно поддерживать один и тот же текст в двух файлах.
Рассмотрим следующий пример.
R файл уценки
---
title: "Example"
runtime: shiny
vertical_layout: fill
output:
flexdashboard::flex_dashboard:
orientation: rows
---
```{r setup, include=FALSE}
library(shiny)
library(tidyverse)
```
Explore
======================================================================
### PLOT 1
```{r}
mtcars %>% ggplot(aes(x=mpg, y=cyl)) + geom_point()
```
### PLOT 2
```{r}
mtcars %>% ggplot(aes(x=mpg, y=qsec)) + geom_point()
```
About
============================================================================
#### README
A brief description of the document.
Я специально спрашиваю, можно ли заменить две текстовые строки в разделе «О программе» какой-либо функцией, которая читает файл уценки. Чтобы следующий файл можно было использовать в качестве README и раздела about в приложении.
Файл уценки
#### README
A brief description of the document.
Предложение с использованием readLines
.
Определите функцию для чтения .md-файла с помощью readLines()
, затем замените пустые строки новыми строками, \n
, наконец, объедините и распечатайте с помощью cat
pasteReadme <- function(fileName){
breakFun <- function(x){
#function to replace empty lines with newline.
if (nchar(x) == 0){
return("\n\n") #double newline to give same space as in the .md-file
} else {
return(x)
}
}
storeLines <- readLines(fileName)
cat(paste0(lapply(storeLines, FUN=function(x) breakFun(x)), collapse = ""))
}
Вывод в формате .Rmd с использованием параметров фрагмента results = 'asis'
. Протестировано с изображениями (например, 
) и обычным HTML-кодом. Должно работать в большинстве случаев. См. пример ниже.
о.мд
<!-- #### README -->
<!-- A brief description of the document. -->
#### README
A brief description of the document.
This is some more about text
##### This logo is important for the project

Works with **bold** and *italics*
###### Another Header
<span style = "color:blue">text is blue</span>
.rmd-файл
---
title: "Example"
runtime: shiny
vertical_layout: fill
output:
flexdashboard::flex_dashboard:
orientation: rows
---
```{r setup, include=FALSE}
library(shiny)
library(tidyverse)
pasteReadme <- function(fileName){
breakFun <- function(x){
#function to replace empty lines with newline.
if (nchar(x) == 0){
return("\n\n") #double newline to give same space as in the .md-file
} else {
return(x)
}
}
storeLines <- readLines(fileName)
cat(paste0(lapply(storeLines, FUN=function(x) breakFun(x)), collapse = ""))
}
```
Explore
======================================================================
### PLOT 1
```{r}
mtcars %>% ggplot(aes(x=mpg, y=cyl)) + geom_point()
```
### PLOT 2
```{r}
mtcars %>% ggplot(aes(x=mpg, y=qsec)) + geom_point()
```
About
============================================================================
```{r, results='asis'}
pasteReadme("about.md")
```