library(shiny)
# Define UI for displaying current time ----
ui <- fluidPage(
h2(textOutput("currentTime"))
)
# Define server logic to show current time, update every second ----
server <- function(input, output, session) {
output$currentTime <- renderText({
invalidateLater(1000, session)
paste("The current time is", Sys.time())
})
}
# Create Shiny app ----
shinyApp(ui, server)
ui <- fluidPage(
h2(textOutput("currentTime"))
)
사용자의 환경에 맞게 자동으로 디스플레이를 조정해주는 fluidpage()
함수 사용
h2()
함수는 html의 h1~h6에 대응하는 머리글을 작성하는 함수
textOutput()
함수로 서버함수로부터 받아온 currentTime
을 출력
server <- function(input, output, session) {
output$currentTime <- renderText({
invalidateLater(1000, session)
paste("The current time is", Sys.time())
})
output
객체는 ui.R에서 output값으로 참조하게되는 변수의 list이다.
output$
뒤에는 어떤 값을 output으로 ui.R에 전달할지를 결정하게 된다. 즉, 이 프로그램에서는 currentTime
을 output으로서 전달하게 된다.
renderText()
라는 함수를 사용해서 어떤 텍스트를 currentTime에 반환할 지를 결정하게 된다
invalidateLater()
라는 함수는 한 세션동안 1000밀리세컨즈 단위로 계속 갱신시켜주는 함수이다. 1000밀리세컨즈는 1초니까 이 함수의 경우는 1초마다 갱신을 시켜주게 된다.
밑에 있는 paste()
함수는 말그대로 "The current time is" 라는 문장과 Sys.time()
함수의 값을 붙이는 함수이다.
정리하자면 "The current time is"라는 텍스트와 시스템시간을 붙이고 그것을 매 초마다 계속 갱신시켜서 currentTime
이라는 output값으로 ui.R에 반환하여 현재시간을 표시해주는 프로그램이다.