08_htmlは、ui.Rなしで、server.Rで計算した値をHTMLファイルで表示する例です。server.Rは06_tabsetsと全く同じです。
「08_html」の実行
library(shiny) runExample("08_html")
server.R
library(shiny) # ランダムな分布を表示するサーバー側を定義 function(input, output) { # 分布を生成する # 入力が変化したときにreactiveに呼ばれる # 下部の出力関数は、ここで生成したreactiveな分布を使用する data <- reactive({ dist <- switch(input$dist, norm = rnorm, unif = runif, lnorm = rlnorm, exp = rexp, rnorm) dist(input$n) }) # dataのプロットとラベルを生成 # 入力は両方と依存関係があり、どちらかが変化したときはそれに追随して変化する output$plot <- renderPlot({ dist <- input$dist n <- input$n hist(data(), main=paste('r', dist, '(', n, ')', sep='')) }) # データのsummaryを生成 output$summary <- renderPrint({ summary(data()) }) # HTMLで表記したデータの表を生成 output$table <- renderTable({ data.frame(x=data()) }) }
Code license:MIT
HTML
<html> <head> <script src="shared/jquery.js" type="text/javascript"></script> <script src="shared/shiny.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="shared/shiny.css"/> </head> <body> <h1>HTML UI</h1> <p> <label>Distribution type:</label><br /> <select name="dist"> <option value="norm">Normal</option> <option value="unif">Uniform</option> <option value="lnorm">Log-normal</option> <option value="exp">Exponential</option> </select> </p> <p> <label>Number of observations:</label><br /> <input type="number" name="n" value="500" min="1" max="1000" /> </p> <pre id="summary" class="shiny-text-output"></pre> <div id="plot" class="shiny-plot-output" style="width: 100%; height: 400px"></div> <div id="table" class="shiny-html-output"></div> </body> </html>
Code license:MIT
<head></head>
でshiny.jsとshiny.css使用を宣言入力用コントロール
<select></select>
,<input />
で指定したname属性が、server.Rでreactiveな入力input$name
,input$n
となる出力はidとclassを指定して、HTML上に配置する。テキストは
shiny-text-ouput
、プロットはshiny-plot-output
、HTMLの表はshiny-html-output
をclassに指定する