2016-04-20 39 views
0

this答案我试图创建一个应用程序,将输出的基础上的价值曲线,我会通过URL传递给应用传递URL参数,以闪亮的绘图功能

library(shiny) 

shinyApp(
    ui = fluidPage(
    mainPanel(
     plotOutput("plot") 
    ) 
), 
    server = function(input, output, session) { 
    observe({ 
     query <- parseQueryString(session$clientData$url_search) 
     if (!is.null(query[['text']])) { 
     n <- query[['text']] 
     } 
    }) 
    output$plot <- renderPlot({ 
     # Add a little noise to the cars data 
     plot(cars[sample(nrow(cars), n), ]) 
    }) 
    } 
) 

但我不知道知道我应该在何处/如何存储/传递变量n的值,以便将其从observe()转换为renderPlot()

回答

1

试试这个。请注意,n被定义为每个会话的全局变量,并注意全局赋值运算符<<-

library(shiny) 

shinyApp(
    ui = fluidPage(
     mainPanel(
      plotOutput("plot") 
     ) 
    ), 
    server = function(input, output, session) { 
     n <- 5 
     observe({ 
      query <- parseQueryString(session$clientData$url_search) 
      if (!is.null(query[['text']])) { 
       n <<- query[['text']] 
      } 
     }) 
     output$plot <- renderPlot({ 
      # Add a little noise to the cars data 
      plot(cars[sample(nrow(cars), n), ]) 
     }) 
    } 
)