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:
Cible
ce que je veux c'est la sortie si je tricote le rmd
-le fichier:
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)
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)
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)