2016-02-13 136 views
1

我有這個代碼,我想要有一個選擇輸入選項來選擇繪製圖形的兩種不同的方式。閃亮的輸入圖選擇

我希望如果您選擇「水平」選項「適合2」得到繪製而不是適合。

這是fit2。

plot(forecast(fit2, 



    #Confidence Interval % 

       level = c(70,90)), 
sub= "Confidence Interval 70% ~ 90% 
    or Determined by user", 
ylab= "Y Axis Variable", 

main= "Forecast Linear Structural Model @ Level-Wise", 

    ylim = c(0,400)) 

這是Shiny的代碼。

library(forecast) 
library(shiny) 
timese <- ts(WWWusage, start= c(2008,1), end= c(2016,1), frequency=12) 
fit <- StructTS(timese,"trend") 
fit2 <- StructTS(timese,"level") 




    ui <- fluidPage(
    (titlePanel("app | Forecast Models", windowTitle = "app")), 


    #Select input 
    selectInput(inputId = "select", label = "Select Forecast", 
       choices = c("Trend","Level"), 

        plotOutput(outputId = "hist")), 

#Range Input 

    sliderInput(inputId = "range", 
       label = "Set Confidence Interval. Up to 99%", 
       min = 0,max = 99, value = c(60,90)), 

    mainPanel(plotOutput(outputId = "plot")) 

) 



server <- function(input, output) { 

    output$plot <- renderPlot({ 

    plot(forecast(fit, #Confidence Interval % 
        level = c(input$range)), 
     sub= "Confidence Interval 70% ~ 90% or Determined by user", 
     ylab= "Y Axis Variable", 
     main= "Forecast Linear Structural Model @ Trend-Wise", 
     ylim = c(0,400)) 
    }) 

} 

shinyApp(ui, server) 

回答

1

server <- function(input, output) { 

    output$plot <- renderPlot({ 
     if(input$select=="Trend") 
      plot(forecast(fit, #Confidence Interval % 
          level = c(input$range)), 
       sub= "Confidence Interval 70% ~ 90% or Determined by user", 
       ylab= "Y Axis Variable", 
       main= "Forecast Linear Structural Model @ Trend-Wise", 
       ylim = c(0,400)) 
     else 
      plot(forecast(fit2, 
          #Confidence Interval % 
          level = c(70,90)), 
       sub= "Confidence Interval 70% ~ 90% or Determined by user", 
       ylab= "Y Axis Variable", 
       main= "Forecast Linear Structural Model @ Level-Wise", 
       ylim = c(0,400)) 
    }) 

} 

基本上你會根據跟蹤input$select什麼陰謀裏面呈現的情節。

稍微更優雅的版本會。

server <- function(input, output) { 

    output$plot <- renderPlot({ 
     if(input$select=="Trend") 
      method <- fit 
     else 
      method <- fit2 
     plot(forecast(method, #Confidence Interval % 
         level = c(input$range)), 
      sub= "Confidence Interval 70% ~ 90% or Determined by user", 
      ylab= "Y Axis Variable", 
      main= "Forecast Linear Structural Model @ Trend-Wise", 
      ylim = c(0,400)) 

    }) 

} 

但是,這使得兩個情節「更相似」。正如你在標題中看到的那樣。所以你需要在if中定義額外的變量。這歸結爲一種折衷