在timevis +闪亮,我可以做输入变量输入$ mytime_window操作?

时间:2019-02-02 19:31:15

标签: r shiny

在R包timevis中,输入值input$mytime_window“将返回一个2元素矢量,其中包含时间轴中当前可见的最小和最大日期。”我想将最小值增加五天,并在setWindow()函数中使用结果,该函数本身将是observeEvent的一部分。理想情况下,时间轴视图将跳至新的日期范围。

在我的实验中,setWindow()将设置与input$mytime_window[1]的值的图,例如,开始日期,那么我可以使用日期的字符串或类似的函数Sys.Date()如结束日期,并获得预期的结果。但我似乎无法能够使用运算符或函数的input$mytime_window值。我所有试图找出input$mytime_window值的尝试都显示了null值。

即使我问的是不可能的事情,我对input$mytime_window的价值及其运作方式也很困惑。我想更好地理解。

下面的最小代码:

library(shiny)
library(timevis)

# Minimal example derived from https://daattali.com/shiny/timevis-demo/

data <- data.frame(
  id      = 1:4,
  content = c("Item one", "Item two",
              "Ranged item", "Item four"),
  start   = c("2016-01-10", "2016-01-11",
              "2016-01-20", "2016-02-14 15:00:00"),
  end     = c(NA, NA, "2016-02-04", NA)
)

ui <- fluidPage(

  actionButton("action", label = "Action"),

  timevisOutput("timeline")

)

server <- function(input, output) {

      output$timeline <- renderTimevis({
        timevis(data)
      })

      # Trying to use input$mytime_window as a value in setWindow()
      # The code below gives no result
      # But replace the line with: 
      # setWindow("timeline", input$mytime_window[1], Sys.Date())
      # And I get an expected result (just not the one I want)

      observeEvent(input$action, {
        setWindow("timeline", input$mytime_window[1], input$mytime_window[1]+5)
      })

  }

shinyApp(ui = ui, server = server)

我还尝试过将input $ mytime_window转换为lubridate并将其添加到days(5)中。都产生错误信息。

感谢您的帮助,是的,这是我的第一篇文章,所以即使没有解决方法,我也将为此庆祝!

1 个答案:

答案 0 :(得分:0)

@KeqiangLi提供的评论回答了这个问题。现在需要帮助的行显示为:

setWindow("timeline", input$timeline_window[1], as.Date(input$timeline_window[1])+5)