在R中观察输入的变化并更新输出
我想观察在R中观察输入的变化并更新输出,r,shiny,reactive-programming,R,Shiny,Reactive Programming,我想观察输入中的变化。当输入更改时,应更新输出 output = reactiveValues(a = 10) input = reactiveValues(act1 = 0, act2 = 0) eventReactive(input$act1, { output$a = 20 }) eventReactive(input$act2, { output$a = 30 }) isolate(input$act1) # 0 isolate(o
输入中的变化。当输入
更改时,应更新输出
output = reactiveValues(a = 10)
input = reactiveValues(act1 = 0, act2 = 0)
eventReactive(input$act1, { output$a = 20 })
eventReactive(input$act2, { output$a = 30 })
isolate(input$act1)
# 0
isolate(output$a)
# 10
input$act1 = 1
isolate(output$a)
# 10
isolate(input$act1)
# 1
我原以为output$a
在更改input$act1
后会变成20。但这并没有发生
由于input
是一个被动值对象,它应该调用eventReactive
返回的被动表达式对象。为什么输出$a
没有得到更新 eventReactive
确实返回一个被动表达式,该表达式是一个函数,并且是惰性计算的。要计算反应表达式,必须满足两个条件:
- 必须有一个依赖于它的输出元素
- 必须至少使其一个依赖项无效
因为您的代码会立即丢弃新创建的表达式,所以很明显,这些表达式没有依赖值,也没有计算的理由
据我所知,你的意图是,你需要的是一个观察者,它不同于被动的表达,是热切地被评估的
observeEvent(somevent, { someAction() })
另一方面,使用反应性表达来表达副作用通常不是一个好的做法