출력 유형

shinydashboard로 대시보드 만들기

Png Kee Seng

Researcher

Output과 render 함수

  • shinyApp에는 출력이 있습니다
  • 각 출력마다 함수 2개를 호출합니다

    • 첫 번째는 UI의 함수입니다
    • 출력의 위치를 결정합니다
    • 일반적인 형식:
      <type>output(<identifying label>, ...)
      
  • 두 번째 코드는 server 함수 내에 정의합니다

    • 형식은 다음과 같습니다:
      output$<identifying label> <- render<type>(...)
      
shinydashboard로 대시보드 만들기

예시: 수면 연구

  • 먼저 데이터 세트를 불러옵니다
    library(tidyverse)
    sleep <- read_csv("../data/Time Americans Spend Sleeping.csv")  
    
  • 다음은 열입니다
    $ index                   : num [1:945] 0 1 2 3 4  ...
    $ Year                    : num [1:945] 2003 2004 2005 2006 2007 ...
    $ Period                  : chr [1:945] "Annual" "Annual" "Annual" "Annual" ...
    $ Avg hrs per day sleeping: num [1:945] 8.57 8.55 8.62 8.63  ...
    $ Standard Error          : num [1:945] 0.018 0.026 0.023 0.024  ...
    $ Type of Days            : chr [1:945] "All days" "All days" "All days" ...
    $ Age Group               : chr [1:945] "15 years and over" "15 years and over" ...
    $ Activity                : chr [1:945] "Sleeping" "Sleeping" "Sleeping" ...
    $ Sex                     : chr [1:945] "Both" "Both" "Both" ...
    
shinydashboard로 대시보드 만들기

textOutput

  • 먼저 UI에 textOutput을 배치합니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  textOutput("textlabel"))

server <- function(input, output) {
}

shinyApp(ui, server)
shinydashboard로 대시보드 만들기

renderText

  • 텍스트 출력을 렌더링하려면 server에 renderText를 배치합니다
  • output$ 표기법이 필요합니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  textOutput("textlabel"))

server <- function(input, output) { output$textlabel <- renderText("Sleep deprivation is a serious health issue in many major cities around the world.") }
shinyApp(ui, server)
shinydashboard로 대시보드 만들기

렌더링된 textOutput

입력 상호작용 없이 텍스트 출력 데모.

shinydashboard로 대시보드 만들기

상호작용이 있는 textOutput

  • 입력과 출력의 상호작용을 위해서는 input$로 입력을 참조해야 합니다
input$<type>
shinydashboard로 대시보드 만들기

상호작용이 있는 textOutput

  • 예시로 텍스트 입력을 살펴보겠습니다.
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 

textInput("textlabel", "Tell me your name", value = "", placeholder = "Don"),
textOutput("textoutlabel")) server <- function(input, output) { output$textoutlabel <- renderText(paste0("Hello ",
input$textlabel,
"Sleep deprivation is a serious health issue in many major cities around the world.")) } shinyApp(ui, server)
shinydashboard로 대시보드 만들기

상호작용이 있는 textOutput

상호작용이 있는 텍스트 출력.

shinydashboard로 대시보드 만들기

plotOutput

  • UI에 plotOutput()을 배치합니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 

plotOutput("plotlabel"))
server <- function(input, output) { } shinyApp(ui, server)
shinydashboard로 대시보드 만들기

renderPlot

  • server()에 renderPlot()을 배치해야 합니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  plotOutput("plotlabel"))

server <- function(input, output) {

output$plotlabel <- renderPlot({ ggplot(sleep) + geom_histogram(aes(x = `Avg hrs per day sleeping`)) })
} shinyApp(ui, server)
shinydashboard로 대시보드 만들기

렌더링된 plotOutput

plotOutput 데모.

shinydashboard로 대시보드 만들기

selectInput과 함께하는 plotOutput

  • 사용자 입력으로 다른 결과를 만들 수 있습니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  selectInput("selectlabel", 
              "Select an option",
              choices = c("Histogram", "Boxplot")),
  plotOutput("plotlabel"))
shinydashboard로 대시보드 만들기

selectInput과 함께하는 plotOutput

server <- function(input, output) {
  output$plotlabel <- renderPlot({
    if (input$selectlabel == "Histogram"){

ggplot(sleep) + geom_histogram(aes(x = `Avg hrs per day sleeping`))
} else if (input$selectlabel == "Boxplot"){
ggplot(sleep) + geom_boxplot(aes(x = `Avg hrs per day sleeping`))
} }) } shinyApp(ui, server)
shinydashboard로 대시보드 만들기

selectInput과 함께하는 plotOutput

selectInput이 있는 plotOutput 데모

shinydashboard로 대시보드 만들기

sliderInput과 함께하는 plotOutput

  • 이번에는 sliderInput 예시를 보겠습니다
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 

sliderInput("sliderlabel", "Average hours of sleep", min = 7.5, max = 11, value = c(7.5, 11), step = 0.02),
plotOutput("plotlabel")) server <- function(input, output) {
output$plotlabel <- renderPlot({ filter(sleep, `Avg hrs per day sleeping` >= input$sliderlabel[1], `Avg hrs per day sleeping` <= input$sliderlabel[2]) %>% ggplot() + geom_boxplot(aes(x=`Avg hrs per day sleeping`)) })
} shinyApp(ui, server)
shinydashboard로 대시보드 만들기

sliderInput과 함께하는 plotOutput

sliderInput이 있는 plotOutput 데모

shinydashboard로 대시보드 만들기

shiny의 아이콘

  • shiny에는 shinyApp에서 사용할 수 있는 아이콘도 있습니다

shiny의 일부 아이콘

1 https://fontawesome.com/icons
shinydashboard로 대시보드 만들기

shiny 아이콘: 예시

  • icon("...")을 사용합니다
  • 앞의 예시를 떠올려 보세요
  • 예: icon("bed")
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  sliderInput("sliderlabel",

list(icon("bed"),
"Select an option:"), min = 7.5, max = 11, value = c(7.5, 11), step = 0.02), plotOutput("plotlabel")) server <- function(input, output) { output$plotlabel <- renderPlot({ filter(sleep, `Avg hrs per day sleeping` >= input$sliderlabel[1], `Avg hrs per day sleeping` <= input$sliderlabel[2]) %>% ggplot() + geom_boxplot(aes(x=`Avg hrs per day sleeping`)) }) } shinyApp(ui, server)
shinydashboard로 대시보드 만들기

아이콘이 있는 렌더된 앱

아이콘 데모

shinydashboard로 대시보드 만들기

연습해 봅시다!

shinydashboard로 대시보드 만들기

Preparing Video For Download...