0

我想单击 dygraph 中的一个点并以“%Y-%m-%d %H:%M:%S”格式获取其对应的日期。在这里,我重现了我的问题:

library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)


dates <- seq(as.POSIXct("2021-01-01 05:00:00"), as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)

set.seed(24)

df <- data.table(date = dates,
                 percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
                 )


ui <- fluidPage(
  fluidRow(
    column(width = 12,
           dygraphOutput("dygraph")
    )
  ),
  fluidRow(
    verbatimTextOutput("click")
  )
)

server <- function(input, output){
  
  output$dygraph <- renderDygraph({
    dygraph(df) 
  })
  
  output$click <- renderPrint({
    input$dygraph_click$x
  })
}

shinyApp(ui = ui, server = server)

以下是输出的样子:

在此处输入图像描述

我的问题是它没有给我正确的格式。我尝试使用格式功能,但它不起作用。我在渲染打印中使用了以下行:

format(as.POSIXct(input$dygraph_click$x), "%Y-%m-%d %H:%M:%S")

这是输出:

在此处输入图像描述

它没有正确显示小时:分钟:秒。

有谁知道如何在单击其对应点时打印出日期的 POSIXct 格式?我将不胜感激任何帮助。

4

1 回答 1

1

您可以用于转换lubridate::ymd_hms格式并用于显示输出。input$dygraph_click$xPOSIXctformat

output$click <- renderPrint({
    format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
  })

完整代码 -

library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)

dates <- seq(as.POSIXct("2021-01-01 05:00:00"), 
             as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)

set.seed(24)

df <- data.table(date = dates,
                 percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
)

ui <- fluidPage(
  fluidRow(
    column(width = 12,
           dygraphOutput("dygraph")
    )
  ),
  fluidRow(
    verbatimTextOutput("click")
  )
)

server <- function(input, output){
  
  output$dygraph <- renderDygraph({
    dygraph(df) 
  })
  
  output$click <- renderPrint({
    format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
  })
}

shinyApp(ui = ui, server = server)

在此处输入图像描述

于 2021-06-12T01:39:15.287 回答