07_widgetsは、02_textにhelpText
やsubmitButton
といったwidgetsを追加した例です。
「07_widgets」の実行
library(shiny) runExample("07_widgets")
server.R
library(shiny) library(datasets) # 選択されたデータのsummaryと、入力された数のデータを表示するサーバー側を定義 function(input, output) { # 選択されたデータセットを返す datasetInput <- reactive({ switch(input$dataset, "rock" = rock, "pressure" = pressure, "cars" = cars) }) # データセットのsummaryを生成 output$summary <- renderPrint({ dataset <- datasetInput() summary(dataset) }) # 最初のn個のデータを表示 output$view <- renderTable({ head(datasetInput(), n = input$obs) }) }
Code license:MIT
datasetInputは、
switch()
の引数で指定したinput$datasetの値が変わると動的に値が変化output$summaryは、
datasetInput()
の値が変化したとき、すなわちinput$datasetが変化したときに値が変化。input$obsを変えても変化しないoutput$viewは、
datasetInput()
とinput$obsの2つのどちらか一方でも変化したときに値が変化
ui.R
library(shiny) # データセットビューワのUIを定義 fluidPage( # タイトル titlePanel("More Widgets"), # サイドバーに、データセット選択と表示するデータ数入力を配置 # helpText関数で、説明用のテキストを追加 # submitButtonは、入力が変化したときではなく、ユーザにより明示的にボタンが押されたときに # はじめて出力が変化するよう動作させるために配置 # 時間のかかる計算をサーバー側で行っているときに、有効なコントロールに使い方 sidebarLayout( sidebarPanel( selectInput("dataset", "Choose a dataset:", choices = c("rock", "pressure", "cars")), numericInput("obs", "Number of observations to view:", 10), helpText("Note: while the data view will show only the specified", "number of observations, the summary will still be based", "on the full dataset."), submitButton("Update View") ), # datasetのsummaryと、入力された数のデータをHTMLの表として表示 # h4関数は、出力の上側に表示する追加のヘッダ mainPanel( h4("Summary"), verbatimTextOutput("summary"), h4("Observations"), tableOutput("view") ) ) )
Code license:MIT
helpText()
で、複数行に渡る説明文を、文字列としてコントロールの下側に配置submitButtonをサイドバーに配置。reactiveな入力の後でも、submitButtonが押されるまでは出力の表示が変化しない