如何将一个变量从server.R传递给ui.R in flash而不是全局?

时间:2017-01-26 17:37:44

标签: shiny shiny-server

我已经尝试了不同的方法在server.R中存储变量并在ui.R中使用相同的变量而没有太大的成功。(除了声明全局)是否有办法将变量传递给ui.R来自server.R?只要它有效,它可能是一种黑客的方式。

1 个答案:

答案 0 :(得分:6)

这可能对您有用(直接来自我的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)