R Shiny - 如何在渲染函数之间共享变量?

时间:2015-05-18 04:04:59

标签: r shiny

我有从ui.R获得的变量,我想在renderUI和renderPlot函数中使用它们,如下所示,

shinyServer(

  function(input, output, session) {

  output$text <- renderUI({

      # Sites.
      site1 = input$site1
      site2 = input$site2
      site3 = input$site3
      site4 = input$site4

    })

    output$plot = renderPlot({

      # Sites.
      site1 = input$site1
      site2 = input$site2
      site3 = input$site3
      site4 = input$site4

    })

})

我必须重复两次变量,有什么方法可以将它们放在一个地方并且分享它们之间的功能?如果我把变量放在这些函数之外,我会得到错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

您可以创建另一个返回列表的反应函数,如下所示:

shinyServer(
  function(input, output, session) {

    site <- reactive({
      unlist(list("site1" = input$site1, 
                  "site2" = input$site2, 
                  "site3" = input$site3, 
                  "site4" = input$site4))
    }

    output$text <- renderUI({
         site = site()
    })

    output$plot = renderPlot({
         site = site()
    })
})

然后,只需执行site[1]即可调用 site1

希望这有帮助!