RMarkdown en application brillante

Problème

y a-t-il un moyen d'insérer (et d'évaluer) un script RMarkdown dans une application brillante. (Note, Je ne cherche pas une application brillante dans RMarkdown qui est expliquée ici, et je ne suis pas à la recherche pour les Démarques des scripts de shiny (voir la Brillante Galerie de Markdown))

je construis une application qui a du texte, des équations, des morceaux de code, des tracés, et des éléments interactifs. Pour plus de commodité j'utilise des fichiers Markdown pour le texte et les équations et voudrait avoir un graphe parfois entre les deux (c.-à-d. écrire la plupart des choses dans RMarkdown). Comme l'application brillante est plus complexe (j'utilise shinydashboard y compris bon nombre de ses caractéristiques uniques), je préférerais une option qui n'utilise pas l'approche décrite dans le premier lien.

Un minimum de travail serait par exemple:

R-fichier:

library(shiny)

ui <- shinyUI(
  fluidPage(
    includeMarkdown("RMarkdownFile.rmd")
  )
)
server <- function(input, output) {}

shinyApp(ui, server)

et " RMarkdownFile.mdm" dans le même dossier:

This is a text

$$ E(x) = 0 $$ 

```{r, eval = T}
plot(rnorm(100))
```

Résultat:

Shiny App

Cible

ce que je veux c'est la sortie si je tricote le rmd-le fichier: RMarkdown HTML page

spécifiquement, je veux obtenir l'évaluation des morceaux de code (tracer quelque chose...), et je veux obtenir le rendu des équations mathématiques.

des idées?

Solution Éditée

grâce à la d'entrée de @Superposés, j'ai choisi de rendre toutes les rmd fichiers md fichiers avec la commande knit et ensuite l'inclure md les fichiers de l'application shiny (j'utilise markdown au lieu de html car ce dernier produit quelques problèmes avec les équations). Enfin, le includeMarkdown est enveloppé dans withMathJax pour assurer l'affichage correct des équations.

le code final ressemble à ceci:

library(shiny)
library(knitr)

rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)

ui <- shinyUI(
    fluidPage(
        withMathJax(includeMarkdown("RMarkdownFile.md"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)
19
demandé sur David 2015-11-03 15:52:31

2 réponses

je pense que le tricoter et rendre un UI devrait fonctionner.

library(shiny)
library(knitr)

ui <- shinyUI(
    fluidPage(
        uiOutput('markdown')
  )
)
server <- function(input, output) {
    output$markdown <- renderUI({
        HTML(markdown::markdownToHTML(knit('RMarkdownFile.rmd', quiet = TRUE)))
    })
}

shinyApp(ui, server)
14
répondu jenesaisquoi 2015-11-03 13:35:31

selon la demande de @elevendollar, c'est ce que j'ai fini par utiliser:

library(shiny)
library(knitr)

rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)

ui <- shinyUI(
    fluidPage(
        withMathJax(includeMarkdown("RMarkdownFile.md"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)
2
répondu David 2018-05-24 09:45:33