ふんわり R-tips

ぜんぜんわからない、俺たちは雰囲気でRをやっている

rmarkdownを使った組み込みShinyアプリケーション

このエントリは、RStudioのEmbedded Shiny Appsを抜粋・翻訳・追記したものです。

http://rmarkdown.rstudio.com/authoring_embedded_shiny.html

概要

rmarkdownで作成したドキュメントには、以下の2通りの方法でShinyアプリケーションを組み込むことができます。

  1. ShinyApp関数を用いてインラインアプリケーションを定義

  2. ShinyAppDir関数を用いて外部アプリケーションディレクトリを参照

ファイルの先頭に以下のYAMLを記述してRmdファイルを作成し、rmarkdownによる表示を行います。

---
runtime: shiny
output: html_document
---

インラインアプリケーション定義

インラインアプリケーションは、以下のコード例のように定義します。コード中のバックスラッシュは、バッククォートを表示させるために挿入しているので、取り除いてください。

\```{r, echo = FALSE}
shinyApp(
  
  ui = fluidPage(
    selectInput("region", "Region:", 
                choices = colnames(WorldPhones)),
    plotOutput("phonePlot")
  ),
  
  server = function(input, output) {
    output$phonePlot <- renderPlot({
      barplot(WorldPhones[,input$region]*1000, 
              ylab = "Number of Telephones", xlab = "Year")
    })
  },
  
  options = list(height = 500)
)
\```

パラメータheightで、組み込んだアプリケーションが占める縦のスペースの大きさを指定します。

外部アプリケーション参照

別のディレクトリに置いたShinyアプリケーションは、以下のコード例のように参照します。コード中のバックスラッシュは、バッククォートを表示させるために挿入しているので、取り除いてください。

\```{r, echo = FALSE}
shinyAppDir(
  system.file("examples/06_tabsets", package="shiny"),
  options=list(
    width="100%", height=700
  )
)
\```

いずれのRコードも、echo = FALSE属性を指定しています。この属性により、Rコードは、Shinyのコンポーネントと一緒にレンダリングされません。

実行例

f:id:phmpk:20170323201429p:plain

コードを実行すると、markdownによる記述の下側に、Shinyが埋め込まれます。

f:id:phmpk:20170323201515p:plain