Day3 - shiny | 2024-09-02
Jinhwan Kim
Easily build rich and productive interactive web apps in R.
Interactive: 사용자의 요청에 따라 결과가 다름.
ex) 내가 입력한 데이터로 계산한 결과를 보여줘
Web apps: 웹에서 (without R) 실행 되는 프로그램
ex) 샘플수 계산기
Shiny App은 app.R이라는 파일에 코드를 작성하고, 오른쪽 위
주의
Shiny 실행 후 지도의 지점을 클릭하면 아래에 해당 지점의 데이터를 보여준다.
Shiny의 종료
Shiny의 실행은 이미 runApp(), shinyApp() 이라는 함수를 실행하기 때문에 R 콘솔에서 다른 명령어를 실행할 수 없다. Shiny를 종료하기 위해서는 뷰어에서
Shiny app은 UI 와 Server 로 구성
bins
를 생성“UI에서
**Input
으로 입력을 받고 server의 계산을 거쳐 output의**Output
에render**
를 사용하여 보여준다.”
이전 예시는 sliderInput
으로 입력을 받고, output의 plotOutput
에 renderPlot
을 사용하여 보여준다.
작업순서
New file로 하는 경우
Rstudio에서는 Shiny app을 만들기 위한 snippet(템플릿)을 제공.
사용방법:
간단한 구조의 앱을 빠르게 만들 수 있음
…를 차례차례 구현
이런 형태를 만들어 보자
필요한 것
필요한 것
ui <- fluidPage(
...
plotOutput(outputId = 'plot')
)
server<- function(input, output, session){
...
v <- ''
observeEvent(input$year, {
req(v)
v2 <- v %>%
filter(EXMD_BZ_YYYY == input$year)
output$plot <- renderPlot({
v2 %>%
ggplot(aes(x = HGHT, y = WGHT)) +
geom_point()
})
})
}
shinyApp(ui = ui, server = server)
Shiny를 공유하기 위한 클라우드 서비스.
Add New Account에서 ShinyApps.io 선택
이후 shinyapps.io에 배포 가능
Shiny App은 Input을 받고, Output을 보여주는 UI와
Input으로 부터 결과를 계산하는 Server로 구성
Input 은 ExInput(), Output 은 ExOutput() + renderEx()로 사용
다양한 블록이 있으므로 필요에 따라 활용할 수 있음
레이아웃을 통해 앱의 UI / UX을 개선하거나
reactive를 통해 데이터 처리 흐름을 조절할 수 있으며.
shinyapps.io 를 통해 모두가 사용할 수 있게 공유도 가능