闪亮的应用程序以不同的设置开始

时间:2015-06-18 11:38:57

标签: javascript html r shiny

假设我有一个闪亮的应用程序:

library("shiny")

server <- function(input, output) {
  output$plot <- renderPlot({
    par(mar=c(0,0,0,0))
    plot(0:1,0:1, type = "n",xaxs="i",yaxs="i")
    polygon(c(0,1,1,0),c(0,0,1,1),col=input$col, border=NA)
  })
}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("col","Color",c("red","blue"),"red")
    ),
    mainPanel(plotOutput("plot"))
  )
)

shinyApp(ui = ui, server = server)

此应用程序只是根据输入绘制红色或蓝色方块。现在,我想在我的网站上使用这个应用程序,我想要有两个链接:一个“红色应用程序”链接,它将打开应用程序,默认选项设置为“红色”,以及“蓝色应用程序”链接,这将打开应用程序,默认选项设置为“蓝色”。除此之外,应用程序在两种情况下都应该相同。

是否有一种简单的方法可以做到这一点/这是否可能?

1 个答案:

答案 0 :(得分:2)

我已经找到了解决方案。我可以使用session$clientData$url_search来提取我在网址后面放的内容。因此这个应用程序:

library("shiny")

server <- function(input, output, session) {
  output$plot <- renderPlot({
    par(mar=c(0,0,0,0))
    plot(0:1,0:1, type = "n",xaxs="i",yaxs="i")
    polygon(c(0,1,1,0),c(0,0,1,1),col=input$col, border=NA)
  })

  output$colSelect <- renderUI({
    default <- parseQueryString(session$clientData$url_search)$col
    if (is.null(default)) default <- "white"
    selectInput("col","Color",colors(),default)
  })
}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
     htmlOutput("colSelect") 
    ),
    mainPanel(plotOutput("plot"))
  )
)

shinyApp(ui = ui, server = server, options = list(launch.browser  =TRUE))

将以白框开头,但如果我通过例如http://127.0.0.1:7889/?col=blue打开它,它将在蓝色应用中打开。