【发布时间】:2019-02-02 19:31:15
【问题描述】:
在 R 包 timevis 中,输入值 input$mytime_window“将返回一个 2 元素向量,其中包含当前在时间轴中可见的最小和最大日期。”我想在最小值上加上五天,并在setWindow() 函数中使用结果,该函数本身将成为observeEvent 的一部分。理想情况下,时间线视图会跳转到新的日期范围。
在我的实验中,setWindow() 将设置一个具有input$mytime_window[1] 值的视图,例如,开始日期,然后我可以使用日期字符串或类似Sys.Date() 的函数作为结束日期,并得到预期的结果。但我似乎无法在 input$mytime_window 值上使用运算符或函数。我所有试图找出input$mytime_window 的值的尝试都显示了一个空值。
即使我问的是不可能的问题,我也可能对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)。两者都会产生错误消息。
感谢您的帮助,是的,这是我的第一篇文章,所以即使我没有找到解决方案,我也会庆祝!
【问题讨论】:
-
您应该使用 input$timeline_window 来引用输入值,因为 'timeline' 是您在 timevisOutput("timeline") 中定义的 id
-
是的,这行得通。有问题的行现在显示为:
setWindow("timeline", input$timeline_window[1], as.Date(input$timeline_window[2])+(5))。奇怪的是,错误的输入变量在某些情况下给出了正确的答案,但它不会打扰我前进。谢谢@KeqiangLi !!!