在Shining应用程序中构造URL搜索参数?

在Shining应用程序中构造URL搜索参数?,r,shiny,urlsearchparams,R,Shiny,Urlsearchparams,我有一个闪亮的应用程序,可以处理一个大的csv文件。目前,用户可以从下拉菜单中选择一个设施id编号,以获得特定的绘图,请参阅。我想通过URL参数传递这个id,比如/?selected_facilities=1010040,这样我就可以将绘图嵌入到另一个网站中 我已经从中获取了代码,并试图使用它来更新Shiny应用程序服务器部分中的selectInput()值,但我并不真正理解UI部分是如何构造的,因此我没有正确地理解它。任何帮助都将不胜感激!以下是相关代码: #### shiny UI ####

我有一个闪亮的应用程序,可以处理一个大的csv文件。目前,用户可以从下拉菜单中选择一个
设施id
编号,以获得特定的绘图,请参阅。我想通过URL参数传递这个id,比如
/?selected_facilities=1010040
,这样我就可以将绘图嵌入到另一个网站中

我已经从中获取了代码,并试图使用它来更新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']])
    }
  })
#####闪亮的用户界面####

设施您的UI很好,存在
更新选择输入
的问题,请使用
所选
而不是
,并包括
选项

最简单的工作示例:

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)
127.0.0.1:6054/?selected_facility=4