第七回:R-Shiny

SHINYについて
黄研究室4年 小林賢哉
SHINYとは
• 2012年11月に初登場
• インタラクティブなWebアプリケーションを
Rで手軽に作れるRのライブラリ
サンプル
• http://shiny.rstudio.com/gallery/kmeansexample.html
• 他にも色々見たい場合
http://shiny.rstudio.com/gallery/
作ってみよう!!!
• Rstudioを起動
• 「New Project」→「New Directory」
→「Shiny Web Application」
• 名前は適当で、「Create Project」
• 既にコードは書かれてるので起動してみよう!!!
解説:ファイル
• Server.R
→パソコンで処理する部分。
出力に関することはこちらに
• Ui.R
→インターフェースのレイアウトを調整する。
ファイル名はこのままでないと動かない
この2つがあって初めて動く
解説:レイアウト
Ui.R
→ shinyUI(fluidPage( ← レイアウトの設定
他にも色々あるよ!!!
http://shiny.rstudio.com/articles/layout-guide.html
解説:レイアウト
titlePanel
sidebarPanel
mainPanel
解説:ソースコード(ui.R)
•
shinyUI(fluidPage(
•
titlePanel("Old Faithful Geyser Data")
•
•
•
•
•
•
•
•
•
•
•
•
•
ページの設定
,
sidebarLayout(
sidebarPanel(
sliderInput(“bins”,
引数
“Number of bins:”, ラベル
min = 1,
最小の値
max = 50,
最大値
value = 30)
最初の値
)
,
mainPanel(
plotOutput("distPlot")
)
)
))
titlePanel
()の中で、次に行く時は、
「,」を忘れない
sidebarPanel
スライドバーのイン
プットについて
mainPanel
出力について書いている
解説:ソースコード(server.R)
shinyServer(function(input,
output) {
Render*→リアルタイムな出力に対して
ウィジェットの値が変わった
時、実行される。
output$distPlot <- renderPlot({
Output$*→ui.Rで書いたものに対応
x <- faithful[, 2]
bins <- seq(min(x), max(x),
length.out = input$bins + 1)
hist(x, breaks = bins, col =
'darkgray', border = 'white')
})
})
Input$*→ウィジェットの値に対応
R言語を普通に書き込める!!!
出力について:
ヒストグラムについて
書いている
つまりぃ・・・
server.R
Ui.R
•
shinyUI(fluidPage(
•
titlePanel("Old Faithful Geyser Data")
•
•
sidebarLayout(
sidebarPanel(
sliderInput("
",
“Number of bins:”,
min = 1,
max = 50,
value = 30)
•
•
•
•
•
,
bins
•
•
•
•
•
•
shinyServer(function(input, output) {
)
,
mainPanel(
plotOutput("distPlot")
)
)
))
distPlot <renderPlot({
output$
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out
=
input$bins + 1)
hist(x, breaks = bins, col = 'darkgray',
border = 'white')
})
})
もっと色々正確に知りたい!!
インターフェースについて
http://qiita.com/hoxo_m/items/8a
138429d8d995440020
ウィジェットについて
http://qiita.com/hoxo_m/items/8e
84eb67c44afebe4d24
出力について
http://qiita.com/hoxo_m/items/50
c6541ad5a475a6736b
問題
• このようなアプリケーションをつくれ
• 「倍の数字」・「気分」は、ウィジェットによって、
リアルタイムに変更される。
ヒント
とはいいません!!!
スライドに書かれてない事は添付したURLの内容を参考に!!!
分からないことがあったら聞いてください。
答えられる範囲で答えます。
終わった人は・・・・応用!!!
• 今までのプロジェクトで行った分析をWebアプ
リケーションにしてみよう!!!
Server.R
# This is the server logic for a Shiny web application.
# You can find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com
#
library(shiny)
shinyServer(function(input, output) {
output$text <- renderText({
paste("今の自分の気分はいつもより", input$bins ,"倍" , input$radio)
})
})
ui.R
# This is the user-interface definition of a Shiny web application.
# You can find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com
#
library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel("11月6日黄プロジェクト問題"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"何倍?",
min = 100,
max = 1000,
value = 500),
radioButtons("radio", label = h3("気分は?"),
choices = list("最高" = "最高", "早く帰りたい" = "早く帰りたい",
"もう授業終われ" = "もう授業終われ"),selected = "最高")
),
ui.R
# Show a plot of the generated distribution
mainPanel(
textOutput("text")
)
)
))