0

below an shiny app aiming to plot which is a sum of multiplications between

  • the values of a csv : as.numeric(as.character(s$ascor[1], na.rm=TRUE))
  • the values of slider values : input$green/100

The issue is that the plot is not dynamic ; y = NA on the plot (see image enclosed); i don't know what is wrong

i have checked this one but it solely speak about deleting the warnings so it does not fix the plot issue ==> How to avoid warning when introducing NAs by coercion

below the code:

library(shiny)
library(ggplot2)

# Define UI for slider demo app ----
ui <- fluidPage(

  # App title ----
  titlePanel("Sliders"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar to demonstrate various slider options ----
    sidebarPanel(

      # Input: Simple integer interval ----
      sliderInput("green", "Green:",
                  min = 0, max = 200,
                  value = 50),

      # Input: Decimal interval with step value ----
      sliderInput("blue", "Blue:",
                  min = 0, max = 200,
                  value = 50, step = 0.1),

      # Input: Specification of range within an interval ----
      sliderInput("red", "Red:",
                  min = 0, max = 200,
                  value = 50),

       # Input: Specification of range within an interval ----
      sliderInput("yellow", "Yellow:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("purple", "Purple:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("brown", "Brown:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("black", "Black:",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("white", "White:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("pink", "Pink",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("orange", "Orange",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("gold", "Gold",
                  min = 0, max = 200,
                  value = 50)
    ),



    # Main panel for displaying outputs ----
    mainPanel(

      # Output: Table summarizing the values entered ----
      tableOutput("values"),
      plotOutput('distPlot')  

    )
  )
)

# Define server logic for slider examples ----
server <- function(input, output) {



  # Reactive expression to create data frame of all input values ----
  sliderValues <- reactive({

    data.frame(
      Name = c("Total"),
      Value = as.character(c(input$green/100*as.numeric(as.character(s$ascor[[1]], na.rm=TRUE))+input$blue/100*as.numeric(as.character(s$ascor[[2]], na.rm=TRUE))+input$red/100*as.numeric(as.character(s$ascor[[3]], na.rm=TRUE))+input$yellow/100*as.numeric(as.character(s$ascor[[4]], na.rm=TRUE))+input$purple/100*as.numeric(as.character(s$ascor[[5]], na.rm=TRUE))+input$brown/100*as.numeric(as.character(s$ascor[[6]], na.rm=TRUE))+input$black/100*as.numeric(as.character(s$ascor[[7]], na.rm=TRUE))+input$white/100*as.numeric(as.character(s$ascor[[8]], na.rm=TRUE))+input$pink/100*as.numeric(as.character(s$ascor[[10]], na.rm=TRUE))+input$orange/100*as.numeric(as.character(s$ascor[[11]], na.rm=TRUE))+input$gold/100*as.numeric(as.character(s$ascor[[12]], na.rm=TRUE)))),
                             stringsAsFactors = FALSE)

  })



  # Show the values in an HTML table ----
  output$distPlot <- renderPlot({

    # Render a barplot
    sliderValues <- data.frame(
      Name = c("Total"),
      Value = as.character(c(input$green/100*as.numeric(as.character(s$ascor[[1]], na.rm=TRUE))+input$blue/100*as.numeric(as.character(s$ascor[[2]], na.rm=TRUE))+input$red/100*as.numeric(as.character(s$ascor[[3]], na.rm=TRUE))+input$yellow/100*as.numeric(as.character(s$ascor[[4]], na.rm=TRUE))+input$purple/100*as.numeric(as.character(s$ascor[[5]], na.rm=TRUE))+input$brown/100*as.numeric(as.character(s$ascor[[6]], na.rm=TRUE))+input$black/100*as.numeric(as.character(s$ascor[[7]], na.rm=TRUE))+input$white/100*as.numeric(as.character(s$ascor[[8]], na.rm=TRUE))+input$pink/100*as.numeric(as.character(s$ascor[[10]], na.rm=TRUE))+input$orange/100*as.numeric(as.character(s$ascor[[11]], na.rm=TRUE))+input$gold/100*as.numeric(as.character(s$ascor[[12]], na.rm=TRUE)))),
                             stringsAsFactors = FALSE)
      p <- ggplot(sliderValues(), aes(x=Name, y=Value)) +geom_bar(stat = "identity")
 print(p)


  })


}


shinyApp(ui, server)

So i am getting this error message :

Listening on http://127.0.0.1:5216
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :



Listening on http://127.0.0.1:5216
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :
  NAs introduits lors de la conversion automatique
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :
  NAs introduits lors de la conversion automatique
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :

enter image description here enter image description here

OrganicMustard
  • 1,158
  • 1
  • 15
  • 36

1 Answers1

0

I got the issue thanks to How to read in numbers with a comma as decimal separator?

the CSV files were formatted in the european style using commas instead of decimal points, i.e. 0,5 instead of 0.5. i changed the dataset in order for R to treat the data as a number rather than a string.

Thank you for your help!

OrganicMustard
  • 1,158
  • 1
  • 15
  • 36