繁体   English   中英

如何将参数从闪亮的ui对象传递到服务器渲染对象

[英]How to pass parameters from shiny ui object to a server render object

我正在构建一个闪亮的仪表板,并从同一数据集中绘制了许多图。 与其为每个选择的系列制作单独的服务器output $ name对象,不如让一个服务器对象带有一个变量,然后将一个变量传递给每个ui对象,以指示我要显示的系列。

ui <- dashboardPage(
    fluidRow(

      column(width = 6,
        box(title = "Net Income", width=NULL,
          dygraphOutput(outputId = "net_income", height = "300px"))
             ),

       column(width = 6,
         box(title = "Accounts Receivable", width=NULL,
            dygraphOutput(outputId = "accounts", height = "300px"))
              )  
) # end ui

请注意,我正在创建的多个服务器对象从一系列对象fcast_data中选择要显示的系列。 我正在从该数据集中显示10个图表,因此必须产生10个单独的服务器渲染对象。 我想创建一个带有变量“ series_name”的服务器对象,我可以从ui对象中传递该变量以指示要显示的系列。

server <- function(input, output) { 
  output$net_income <- renderDygraph({ 
    dygraph(fcast_data %>% select(net_income), group = "my_dash")})

  output$accounts_receivable <- renderDygraph({ 
     dygraph(fcast_data %>% select(accounts_receivable), group = "my_dash")})

} # end server

有没有一种方法可以使一个服务器对象(renderDygraph)仅从我的ui对象(dygraphOutput)中获取参数来选择要显示的不同系列? 我知道如何使用selectInputs来做到这一点,但无法弄清楚如何对ui对象中的变量进行硬编码以传递给服务器。

为了完整起见:就像我在评论中提到的那样,可以在此处找到一个示例: https : //shiny.rstudio.com/gallery/creating-a-ui-from-a-loop.html

如果无法使用给定的代码对其进行测试,则可能会发生以下情况:

types <- c("net_income", "accounts_receivable")

# server
lapply(1:2, function(nr) {
  output[[paste0("dy_g", nr)]] <- renderDygraph({ 
    dygraph(fcast_data %>% select(get(types[nr])), group = "my_dash")
  })
}

# ui
lapply(1:2, function(nr) {
  column(width = 6,
         box(title = types[nr], width=NULL,
             dygraphOutput(outputId = paste0("dy_g", nr), height = "300px"))
  )
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM