我有从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
})
})
我必须重复两次变量,有什么方法可以将它们放在一个地方并且分享它们之间的功能?如果我把变量放在这些函数之外,我会得到错误。
有什么想法吗?
答案 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 。
希望这有帮助!