在反应函数/上下文之外更改变量

时间:2015-09-15 13:59:12

标签: r reactive-programming shiny

我正在寻找一种方法来更改变量,该变量已在闪亮应用中的反应性上下文之外进行了初始化。

含义:我需要设置两个变量,具体取决于闪亮应用中发生的变化,TRUEFALSE

这需要通过反应函数来完成。

示例:

a <- FALSE
c <- FALSE

observeEvent(input$test, { #this triggers c to change to TRUE
    a <- FALSE
    c <- TRUE
)}

有些用户点击了label 测试

按钮
> c
> TRUE

2 个答案:

答案 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)

在此示例中,ac是每个会话全局变量的闪亮。