如何在没有全局的情况下将变量从 server.R 传递到 ui.R?

How to pass a variable from server.R to ui.R in shiny without global?

我尝试了不同的方法来在 server.R 中存储变量并在 ui.R 中使用相同的变量但没有成功。(除了声明它是全局的)有没有办法传递变量从 server.R 到 ui.R?只要可行,这可能是一种 hacky 方式。

这可能对你有用(直接取自我的Shiny tips 'n tricks list):

在 UI conditionalPanel()

中使用来自服务器的变量

在UI中使用条件面板时,条件通常是使用输入值的表达式。但是,如果您想使用条件面板,条件面板具有不一定与输入字段直接相关的更复杂条件,会发生什么情况?此示例说明如何在服务器代码中定义可在 UI 中使用的输出变量。另一种方法是使用 shinyjs 包中的 show() 和 hide() 函数。

library(shiny)

ui <- fluidPage(
  selectInput("num", "Choose a number", 1:10),
  conditionalPanel(
    condition = "output.square",
    "That's a perfect square!"
  )
)

server <- function(input, output, session) {
  output$square <- reactive({
    sqrt(as.numeric(input$num)) %% 1 == 0
  })
  outputOptions(output, 'square', suspendWhenHidden = FALSE)
}

shinyApp(ui = ui, server = server)