web-dev-qa-db-ja.com

光沢のあるアプリケーションでのRMarkdown

問題

RMarkdownスクリプトを光沢のあるアプリケーションに挿入(および評価)する方法はありますか? (私は、説明されているRMarkdownで光沢のあるアプリケーションを探していません ここ も、光沢のあるMarkdownスクリプトも探していません( Shiny Gallery Markdown を参照))

テキスト、方程式、コードチャンク、プロット、インタラクティブな要素を含むアプリケーションを構築しています。便宜上、テキストと方程式にMarkdownファイルを使用し、その間にプロットを配置したいと考えています(つまり、RMarkdownにほとんどのものを書き込みます)。光沢のあるアプリはより複雑なので(私はshinydashboardを使用しており、そのユニークな機能の多くを使用しています)、 最初のリンク で説明されているアプローチを使用しないオプションを好みます。

最小限の実例は次のとおりです。

Rファイル:

library(shiny)

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

shinyApp(ui, server)

および「RMarkdownFile.rmd」は同じフォルダにあります:

This is a text

$$ E(x) = 0 $$ 

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

結果:

Shiny App

目標

必要なのは、rmd-ファイルを編成した場合の出力です。 RMarkdown HTML page

具体的には、コードチャンクの評価(何かをプロットする...)を取得し、レンダリングされた数式を取得します。

何か案は?

編集されたソリューション

@Bunkの入力のおかげで、コマンドrmdを使用してすべてのmdファイルをknitファイルにレンダリングし、mdファイルを光沢のあるアプリ(HTMLの代わりにmarkdownを使用しています。後者は方程式に問題が発生したためです)。最後に、includeMarkdownwithMathJaxにラップされ、方程式が適切に表示されるようにします。

最終的なコードは次のようになります。

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)
28
David

私はそれを編み、UIをレンダリングすることでうまくいくと思います。

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)
19
jenesaisquoi

@elevendollarのリクエストに従って、これは私が最終的に使用したものです:

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)
6
David