2017-08-11 2 views
0

Ceci est lié à un autre post que j'ai, concernant l'ajout d'un nouveau fluidRow (conteringing plot + selectInput) dans mon application shinyDashboard.Erreur dans if (inline) {: l'argument n'est pas interprétable comme logique

Quand je lance le code ci-dessous, je reçois ce qui suit

Error in if (inline) { : argument is not interpretable as logical 

J'ai essayé de bricoler avec la façon dont le code est écrit, par exemple enlever les virgules, mais je n'ai pas été en mesure de trouver un moyen de se débarrasser de l'erreur. De plus, je pense que c'est l'une des causes de ne pas pouvoir générer un fluide supplémentaire. J'ai l'impression qu'il a quelque chose à voir avec mes contrôles d'entrée, mais aucune idée de quoi!

Toute aide serait appréciée.

ui.r

ui <- dashboardPage(
    skin = "red", 
    dashboardHeader(title = "iReport", 
        titleWidth = 500), 
    dashboardSidebar(), 
    dashboardBody(
    tabItems(
     # Tab for Dashboard 
     tabItem(tabName = "Dashboard"), 
     # Tab for Survey Analytics 
     tabItem(tabName = "Survey"), 
     #Tab for Enquiry Analytics 
     tabItem(tabName = "Enquiries"), 
     #Tab for Web Analytics 
     tabItem(tabName = "Metrics"), 
     #Tab for Twitter Analytics 
     tabItem(tabName = "Twitter") 
    ), 

    # Row 1 objects 
    fluidRow(
     # Value boxes 
     valueBox(
     479, 
     "Total No. of Enquiries", 
     color = "green", 
     icon = icon("commenting") 
    ), 
     valueBox(
     1.7, 
     "Average response time", 
     color = "blue", 
     icon = icon("exchange") 
    ), 
     valueBox(
     "98%", 
     "Percentage satisfied customers", 
     color = "orange", 
     icon = icon("thumbs-up") 
    ) 
    ), 

    # Row 2 objects 
    fluidRow(box(
     width = 12, plotlyOutput("Time_Ser", height = "400px") 
    )), 

    # Row 3 objects 
    fluidRow(
     # Data visualisations 1 
     box(width = 5, plotlyOutput("Enq_Num", height = "500px")), 
     box(
     width = 2, 
     h2("Control panel"), 
     dateRangeInput(
      "date", 
      "Date:", 
      label = h4("Choose a time frame"), 
      start = "2017-05-02", 
      end = "2017-07-30", 
      min = "2017-05-02", 
      max = "2017-06-30", 
      startview = "2017-06-30" 
     ), 
     selectInput(
      "select", 
      "Select", 
      label = h4("Select a month"), 
      choices = c("May", "June") 
     ), 
     radioButtons(
      "area", 
      "Area", 
      label = h4("Response Time by Team"), 
      choices = list("PEU", "DAU", "MSU", "PRO", "MISC"), 
      selected = "PEU" 
     )), 
     box(width = 5, plotlyOutput("Response", height = "500px"))), 

    #Row 4 Objects 
    fluidRow(# Data visualisations 2 
     box(width = 5, plotlyOutput("Enq_Outcome")), 
     box(
     width = 2, 
     selectInput(
      "outcome", 
      "Outcome", 
      label = h4("Enquiry outcomes by output area"), 
      choices = list("Link", "Clarified", "CM", "Unavailable", "Referred") 
     ))))) 

server.r

server <- function(input, output) { 
     # Reactive date input for Tim_Ser 
     Time2 <- Time 
     reactiveTime <- reactive({ 
     Time2 %>% filter(Date.received >= input$date[1] & 
          Date.received < input$date[2])}) 

    # DATA 
    Numbers <- 
    data.frame(
     May = c(73, 26, 23, 10, 23), 
     June = c(144, 28, 21, 20, 33), 
     areas = c("PEU", "MIG", "DAU", "MISC", "PRO") 
    ) 
    Time <- CusTible %>% group_by(Date.received) %>% tally(sort = TRUE) 
    Time = Time[order(Time$Date.received), ] 
    Respond <- 
    data.frame(
     DAU = c(32, 14, 8), 
     MIG = c(51, 7, 4), 
     MISC = c(42, 41, 3), 
     PEU = c(135, 16, 18), 
     PRO = c(32, 15, 2), 
     Days = c("1-2 Days", "3-4 Days", "5+ Days") 
    ) 
    rownames(Respond) <- c("1-2 Days", "3-4 Days", "5+ Days") 

    Outcome <- 
    data.frame(
     Area = c("DAU", "PEU", "PRO", "MSU", "MISC"), 
     CLAR = c(5, 23, 2, 2, 13), 
     LINK = c(45, 4, 23, 24, 18), 
     UNAV = c(1, 13, 15, 11, 12), 
     CM = c(8, 15, 3, 10, 2), 
     REF = c(26, 24, 11, 7, 12) 
    ) 

    # OUTPUTS 

    output$Time_Ser <- renderPlotly({ 
    Time_Ser <- 
     plot_ly(reactiveTime(), 
       x = Date.received, 
       y = n, 
       mode = "lines") %>% 
     layout(title = "Q3. Enquiries over Time") 

    }) 

    output$Enq_Num <- renderPlotly({ 
    selector <- switch(input$select, 
         "May" = Numbers$May, 
         "June" = Numbers$June) 

    Enq_Num <- plot_ly(
     Numbers, 
     x = areas, 
     y = selector, 
     type = "bar", 
     color = areas 
    ) %>% 
     layout(
     title = "Q3. Enquiries by Output Team by Month", 
     xaxis = list(title = "Output Team", showgrid = F), 
     yaxis = list(title = "No. Enquiries") 
    ) 

    }) 

    output$Response <- renderPlotly({ 
    if (is.null(input$area)) 
     return() 
    area.select <- switch(
     input$area, 
     "PEU" = Respond$PEU, 
     "DAU" = Respond$DAU, 
     "MSU" = Respond$MIG, 
     "PRO" = Respond$PRO, 
     "MISC" = Respond$MISC 
    ) 

    Response <- plot_ly(
     Respond, 
     labels = Days, 
     values = area.select, 
     type = "pie", 
     rotation = 180, 
     direction = "clockwise", 
     hole = 0.6 
    ) %>% 
     layout(title = "Q3. Response Time") 
    }) 

    output$Enq_Outcome <- renderPlotly({ 
    enq.outcome <- switch(
     input$outcome, 
     "Clarified" = Outcome$CLAR, 
     "Link" = Outcome$LINK, 
     "CM" = Outcome$CM, 
     "Unavailable" = Outcome$UNAV, 
     "Referred" = Outcome$REF 
    ) 
    Enq_Outcome <- renderPlotly(
     Outcome, 
     y = Area, 
     x = enq.outcome, 
     type = "bar", 
     colour = Area 
    ) 
    }) 

} 
shinyApp(ui, server) 

Répondre

0

Ainsi, après beaucoup persistance et beaucoup d'aide de l'expert,

Je trouve tout mes problèmes descendent au radioButton() sélecteur d'entrée:

Je remplacerai

radioButtons(
     "area", 
     "Area", 
     label = h4("Response Time by Team"), 
     choices = list("PEU", "DAU", "MSU", "PRO", "MISC"), 
     selected = "PEU" 
    )), 

avec

selectInput(
     "area", 
     "Area", 
     label = h4("Response Time by Team"), 
     choices = list("PEU", "DAU", "MSU", "PRO", "MISC"), 
    )), 

Et le code fonctionne parfaitement bien, le message d'erreur disparaît et le nouveau tracé et fluidRow sont intégrés dans la Tableau de bord.