2015-06-18 5 views
1

Предположим, что у меня есть Блестящая приложение:Блестящая приложение для запуска с разными настройками

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) 

Это приложение просто участки красный или синий квадрат в зависимости от входного сигнала. Теперь я хочу использовать это приложение на своем веб-сайте, где я хочу иметь две ссылки: ссылку «красное приложение», которая откроет приложение с выбором по умолчанию «красный» и «голубое приложение», который откроет приложение с выбором по умолчанию «синий». Кроме того, приложение должно быть одинаковым в обоих случаях.

Был бы простой способ сделать это/это было бы возможно?

ответ

2

Я уже нашел решение. Я могу использовать session$clientData$url_search, чтобы извлечь все, что я положил после URL. Следовательно, это приложение:

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 он будет открыт в синем приложении.

Смежные вопросы