【问题标题】:Constructing URL search parameters in Shiny app?在 Shiny 应用程序中构建 URL 搜索参数?
【发布时间】:2021-02-23 15:41:32
【问题描述】:

我有一个处理大型 csv 文件的 Shiny 应用程序。目前,用户可以从下拉菜单中选择一个facility_id 数字来获得特定的绘图,请参阅https://r.timetochange.today/shiny/Annual_Emissions2/。我想用像/?selected_facilities=1010040 这样的 URL 参数传递这个 id,这样我就可以将图嵌入另一个网站。

我已从How do you pass parameters to a shiny app via URL 获取代码并尝试使用它来更新我在 Shiny 应用程序的服务器部分中的selectInput() 值,但我并不真正了解 UI 部分是如何构造的,所以我不是做对了。任何帮助将不胜感激!以下是相关代码:

#### shiny UI ####
facilities <- unique(ghg_emissions$facility_id)

ui <- fluidPage(
  titlePanel("Annual Greenhouse Gas Emissions"),
  sidebarLayout(
    sidebarPanel(
      selectInput("selected_facility", 
                  "Select facility", 
                  choices = facilities) # select input gives the drop down menu to select facilities
    ),
    mainPanel(
      plotlyOutput("facility_plot")
    )
  )
)

#### shiny server ####
server <- function(input, output, session) {
  # Here you read the URL parameter from session$clientData$url_search
  observe({
    query <- parseQueryString(session$clientData$url_search)
    if (!is.null(query[['selected_facility']])) {
      updateSelectInput(session, "selected_facility", value = query[['selected_facility']])
    }
  })

【问题讨论】:

    标签: r shiny urlsearchparams


    【解决方案1】:

    你的用户界面很好,updateSelectInput 的问题,使用selected 而不是value 并包括choices

    最小的工作示例:

    library(shiny)
    
    facilities <- seq(1:5)
    
    ui <- fluidPage(
        
        selectInput("selected_facility", "Select facility", choices = facilities)
        
    )
    
    server <- function(input, output, session) {
        
        observe({
           
            #Get URL query
            query <- parseQueryString(session$clientData$url_search)
            
            #Ignore if the URL query is null
            if (!is.null(query[['selected_facility']])) {
    
                #Update the select input
                updateSelectInput(session, "selected_facility", selected  = query[['selected_facility']], choices = facilities)
                
            }
            
        })
        
    }
    
    shinyApp(ui, server)
    

    要测试,运行闪亮的应用程序,点击“在浏览器中打开”并将查询附加到 URL,例如

    127.0.0.1:6054/?selected_facility=4
    

    【讨论】:

      猜你喜欢
      • 2014-12-27
      • 1970-01-01
      • 2022-12-25
      • 2020-07-21
      • 2020-12-26
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      相关资源
      最近更新 更多