R 在反应功能/上下文之外更改变量
我正在寻找一种方法来更改一个变量,该变量已在一个闪亮的应用程序的反应性上下文之外初始化 意思:我有两个变量需要设置,具体取决于闪亮应用程序中发生的情况,R 在反应功能/上下文之外更改变量,r,reactive-programming,shiny,R,Reactive Programming,Shiny,我正在寻找一种方法来更改一个变量,该变量已在一个闪亮的应用程序的反应性上下文之外初始化 意思:我有两个变量需要设置,具体取决于闪亮应用程序中发生的情况,TRUE或FALSE 这需要从反应函数的角度来完成 例如: a <- FALSE c <- FALSE observeEvent(input$test, { #this triggers c to change to TRUE a <- FALSE c <- TRUE )} 如果我正确理解了您的问题(您
TRUE
或FALSE
这需要从反应函数的角度来完成
例如:
a <- FALSE
c <- FALSE
observeEvent(input$test, { #this triggers c to change to TRUE
a <- FALSE
c <- TRUE
)}
如果我正确理解了您的问题(您无法在
observeEvent
函数中更新c
),则需要将c
变量放入反应式中,并在observeEvent
中更改它:
variables = reactiveValues(a = FALSE, c = FALSE)
observeEvent(input$test, {
variables$a = FALSE
variables$c = TRUE
})
然后您可以在代码中使用
variables$c
,如果您按下按钮(例如绘图),任何依赖于variables
的内容都将更新。如果您想在父环境中更改变量,请使用,那么您的问题是什么?c
变量是否未更改?啊,我不知道您可以在其中存储多个变量!:)在我的答案中有一个可行的替代方案,因此我会避免在这种情况下使用,我看不出有任何危害。如果提问者不打算与观察者一起监控这些变量,那么在我的理解中,这不是有意使用reactiveValues(),而是给程序增加了不需要的额外负载。
variables = reactiveValues(a = FALSE, c = FALSE)
observeEvent(input$test, {
variables$a = FALSE
variables$c = TRUE
})
ui <- fluidPage(
actionButton("btn_change", "Change Values"),
actionButton("btn_print","Print values")
)
server <- function(input, output) {
a <- F
c <- F
observeEvent(input$btn_change, {
a <<- F
c <<- T
})
observeEvent(input$btn_print, {
cat("a =",a,"c =",c,"\n")
})
}
shinyApp(ui, server)