Chapter 15 shinyapps

마크 다운에 이어서, R을 이용하여 결과물을 보여줄 때 많이 사용하는 프로그램은 샤이니 앱입니다. 샤이니 앱은 자체 tutorial이 너무 잘 되어 있어서 이를 보고 따라하는 것이 가장 도움이 될 것 같네요.

이번 시간에는 구조를 설명하는 것을 하고, 전반적인 것은 shinyapp 페이지를 이용하는 것으로 하겠습니다.

15.1 설치

설치는 shiny 페키지를 설치하는 것입니다.

#install.packages('shiny')
library(shiny)

15.2 예제

아래의 예제를 실행해 보세요

runExample("01_hello")

15.3 예제 1 만들기

15.3.1 구조

구조는 ui, sever로 구성됩니다. ui는 웹이 보여줄 부분, server는 그것이 작동하는 부분입니다. 아래와 같은 구조 입니다 .

library(shiny)
ui     = fluidPage()
server = function(input, output)
shinyApp(ui = ui, server = server)

이에 sidebarLayout을 그 안에 sidebarPanel과 mainPanel을 만듭니다. 이제 구조는 완성이 되었습니다.

library(shiny)
ui     = fluidPage(
   titlePanel("안녕하세요! 윤진하입니다."), 
   sidebarLayout(
     sidebarPanel(), 
     mainPanel()
   ) 
   
)
server = function(input, output){}
shinyApp(ui = ui, server = server)

15.3.2 input, output

input과 ouput을 만듭니다. input을 ui를 통해 받고 이를 server에 옮긴 후 ouput을 만들고, 다시 이를 ui에 output으로 보여주는 방식입니다. 우선 ui에 input을 만들겠습니다. 그래서 그래프를 그려 보도록 하겠습니다.

library(shiny)
ui     <- fluidPage(
  titlePanel("안녕하세요!"),   # 여러분 이름 넣으세요
  sidebarLayout(
    sidebarPanel (
      sliderInput( inputId = "bins", # server input$bins
                   label = "Number of bins", 
                   min =1, max =50, value =30
                   )
    ), 
    mainPanel(
      plotOutput(outputId = "disPlot")
    )
  )
)
server <- function(input, output){
  output$disPlot <- renderPlot({
    hist(faithful$waiting, breaks = input$bins)
  })
}
shinyApp(ui = ui, server = server)

15.3.3 과제

sliderInput의 내용을 수정하여 동영상과 같은 app을 만드세요.