我正在寻找一种方法来更改变量,该变量已在闪亮应用中的反应性上下文之外进行了初始化。
含义:我需要设置两个变量,具体取决于闪亮应用中发生的变化,TRUE
或FALSE
。
这需要通过反应函数来完成。
示例:
a <- FALSE
c <- FALSE
observeEvent(input$test, { #this triggers c to change to TRUE
a <- FALSE
c <- TRUE
)}
有些用户点击了label
测试
> c
> TRUE
答案 0 :(得分:6)
如果我正确理解了您的问题(您无法在c
函数中更新observeEvent
),则需要将c
变量置于被动状态并在{{1}内更改}}:
observeEvent
然后,您可以在代码中使用variables = reactiveValues(a = FALSE, c = FALSE)
observeEvent(input$test, {
variables$a = FALSE
variables$c = TRUE
})
,如果您按下按钮(例如情节),则会更新任何取决于variables$c
的内容。
答案 1 :(得分:0)
如果要更改父环境中的变量,请使用<<-
运算符(有关详细信息,请参阅?"<-"
):
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)
在此示例中,a
和c
是每个会话全局变量的闪亮。