Shiny App中sliderInput显示DateTime却仅返回Date,如何获取显示值?
解决Shiny sliderInput返回完整datetime值的问题
问题核心在于你初始化min/max/value时用了as.Date(),Date类型仅保留日期部分——哪怕滑块通过timeFormat显示了时分秒,后台传递的还是丢失时间信息的Date对象。要获取完整datetime值,只需把日期时间的存储类型换成POSIXct即可,具体修改如下:
修改后的示例代码
rm(list=ls()) library(shiny) ui <- basicPage( sliderInput( "slider", "Time", min = as.POSIXct("2010-12-31 00:00:00"), # 替换as.Date为as.POSIXct max = as.POSIXct("2014-12-31 23:00:00"), value = as.POSIXct("2010-12-31 00:00:00"), timeFormat="%F %T", step = 3600, # 用秒数更直观(1小时=3600秒),也可保留原来的1/24 animate = TRUE ), fluidRow(textOutput("SliderText")) ) server <- shinyServer(function(input, output, session){ output$SliderText <- renderText({as.character(input$slider)}) }) shinyApp(ui = ui, server = server)
关键改动说明
- 替换类型:
as.POSIXct()是R中专门存储带时间的日期时间类型,能完整保留年-月-日 时:分:秒的全部信息。 step参数:写3600(代表1小时的秒数)和原来的1/24(按天数计算的1小时)效果完全一致,前者可读性更强。
修改后拖动滑块,input$slider会返回完整的POSIXct类型datetime值,前台输出的文本也会显示如2010-12-31 01:00:00这样的完整时间字符串。
内容的提问来源于stack exchange,提问作者tomsu
相关产品推荐
相关产品推荐

