将window.location.href传递给Shiny app

时间:2014-03-16 10:12:37

标签: r web-applications shiny

我希望能够使用window.location.href类型函数将参数传递给我的Shiny应用程序。

例如,我希望能够使用:

### http://econometricsbysimulation.shinyapps.io/OLS-App/?nobs=500

告诉应用启动要在500模拟的观察次数。

感谢您提供的任何帮助,

弗朗西斯

1 个答案:

答案 0 :(得分:0)

在您的服务器功能中,您需要传递session参数。 session$clientData然后包含session$clientData$url_search,其中包含相关信息。有一个实用程序函数parseQueryString,可用于解析数据:

library(shiny)
runApp(port = 5678, list(ui = fluidPage(
  headerPanel("Shiny Client Data"),
  column(6, 
    h3("clientData values"),
    verbatimTextOutput("summary"),
    h3("Parsed URL query"),
    verbatimTextOutput("queryText")
  ),
  column(6,
         plotOutput('myPlot'))
)
, server = function(input, output, session){
  output$summary <- renderText({
    cnames <- names(session$clientData)
    allvalues <- lapply(cnames, function(name) {
      item <- session$clientData[[name]]
      if (is.list(item)) {
        list_to_string(item, name)
      } else {
        paste(name, item, sep=" = ")
      }
    })
    paste(allvalues, collapse = "\n")
  })
  output$queryText <- renderText({
    query <- parseQueryString(session$clientData$url_search)
    paste(names(query), query, sep = "=", collapse=", ")
  })
  output$myPlot <- renderPlot({
    query <- parseQueryString(session$clientData$url_search)
    if('nobs' %in% names(query)){
      plot(runif(as.integer(query$nobs)))
    }else{
      plot(runif(100))
    }
  })
}
))

您可以运行上面的代码。该应用可在http://127.0.0.1:5678上查看。导航到http://127.0.0.1:5678?nobs=15,您可以看到正在运行的查询字符串:

enter image description here