Existe-t-il un moyen d'insérer (et d'évaluer) un script RMarkdown dans une application brillante. (Remarque, je ne cherche pas une application brillante dans RMarkdown qui est expliquée ici , ni des scripts Markdown dans shiny ( voir Shiny Gallery Markdown ))
Je crée une application qui contient 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 je voudrais avoir un tracé parfois entre les deux (c'est-à-dire écrire la plupart des choses dans RMarkdown). Comme l'application brillante est plus complexe (j'utilise shinydashboard
incluant plusieurs de ses fonctionnalités uniques), je préférerais une option qui n'utilise pas l'approche décrite dans le premier lien .
Un exemple de travail minimum serait:
Fichier R:
library(shiny)
ui <- shinyUI(
fluidPage(
includeMarkdown("RMarkdownFile.rmd")
)
)
server <- function(input, output) {}
shinyApp(ui, server)
et "RMarkdownFile.rmd" dans le même dossier:
This is a text
$$ E(x) = 0 $$
```{r, eval = T}
plot(rnorm(100))
```
Ce que je veux, c'est la sortie si je tricote le fichier rmd
-:
Plus précisément, je veux obtenir l'évaluation des morceaux de code (tracer quelque chose ...), et je veux obtenir les équations mathématiques rendues.
Des idées?
Grâce à l'entrée de @Bunk, j'ai choisi de rendre tous les fichiers rmd
dans les fichiers md
avec la commande knit
puis d'inclure les fichiers md
dans le fichier application brillante (j'utilise markdown au lieu de html car ce dernier a 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)
Je pense que le tricot et le rendu d'une interface utilisateur devraient 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)
Selon la demande de @ elevendollar, voici 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)