在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)中。都产生错误信息。
感谢您的帮助,是的,这是我的第一篇文章,所以即使没有解决方法,我也将为此庆祝!
答案 0 :(得分:0)
@KeqiangLi提供的评论回答了这个问题。现在需要帮助的行显示为:
setWindow("timeline", input$timeline_window[1], as.Date(input$timeline_window[1])+5)