【发布时间】:2021-09-20 04:10:55
【问题描述】:
我一直在使用 R Shiny,但遇到了一些问题。我想为日期范围输入创建一个用户流,其中:
-
如果用户在结束日期之后输入开始日期,结束日期会自动跟随并模仿开始日期。
-
如果用户在开始日期之前输入结束日期,开始日期会自动跟随并模仿结束日期。
我曾想过尝试使用observeEvent() 来作为单独的输入,如下所示:
#inputId of dateRangeInput = dateRange
#start date
observeEvent(input$dateRange[1], {
- logic -
})
#end date
observeEvent(input$dateRange[2], {
- logic -
})
以上所有操作都是运行两个观察事件,无论我是否更改了开始日期或结束日期的输入,所以我知道我的逻辑或对函数的理解在这里可能存在缺陷。
有没有办法做类似于我想要完成的事情,或者我应该尝试不同的方法?
提前感谢您的宝贵时间!
【问题讨论】:
-
如果您可以提供更完整的reproducible example 以明确您的 UI 是什么样子以及您希望在服务器上发生什么行为,这将有所帮助。响应式“事物”是
input$dateRange,当该输入的值发生变化时,整个向量都会更新,而不仅仅是向量中的一个元素。 -
我认为您需要做的是将当前值保存在
reactiveVal中,然后检查input$dateRange何时更改以查看两端中的哪一个已更改,并仅对那些做出反应.它既不直接也不优雅,但可以做到。 -
您能否提供问题所需的
ui和server代码,以便完全重现问题以及必要时的必要数据? -
另外请注意,滑块的
value需要在更新期间始终有效。否则会出现NULL。我的回答here 可能是相关的。 @r2evans 已确定主要问题及其解决方案。
标签: r shiny shiny-reactivity golem