假设我有一个闪亮的应用程序:
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)
此应用程序只是根据输入绘制红色或蓝色方块。现在,我想在我的网站上使用这个应用程序,我想要有两个链接:一个“红色应用程序”链接,它将打开应用程序,默认选项设置为“红色”,以及“蓝色应用程序”链接,这将打开应用程序,默认选项设置为“蓝色”。除此之外,应用程序在两种情况下都应该相同。
是否有一种简单的方法可以做到这一点/这是否可能?
答案 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
打开它,它将在蓝色应用中打开。