Как прочитать код уценки из файла из документа уценки R - PullRequest
1 голос
/ 27 мая 2019

Я пишу приложение в уценке R с Shiny.На одной странице «Изучить» я покажу некоторые интерактивные графики, а на другой «О программе» я напишу некоторое описание приложения и его использования.

Я хочу, чтобы этот раздел также был файлом README в GitLabрепозиторий, куда он будет отправлен, поэтому он должен быть в уценке.Мне интересно, есть ли способ вызвать этот файл README из документа разметки R, поэтому мне не нужно поддерживать один и тот же текст в двух файлах.

Давайте рассмотрим следующий пример.

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 и как раздел о приложении.

Файл уценки

#### README

A brief description of the document.

1 Ответ

1 голос
/ 30 мая 2019

Предложение с использованием 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'.Протестировали с изображениями (т.е. ![](http://example.com/logo.png)) и нормальным кодом HTML.Должно работать в большинстве случаев.См. Пример ниже.

about.md

<!-- #### 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

![optional caption text](https://www.rstudio.com/wp-content/uploads/2016/09/RStudio-Logo-Blue-Gray-125.png)

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