简体   繁体   中英

R Shiny: Error in max - min : non-numeric argument to binary operator

I am trying to create a simple shiny app for plotting histogram inside rstudio running on Amazon ec2 for my result data stored as .RData file. I have double checked everything. It looks fine. I have also checked the data types: all are numeric.

My codes:

ui.R

    # shiny plots on top_docs data
library(shiny)
shinyUI(fluidPage(
 # Header title
  titlePanel(title = h4("Top doctors plots - a histograms", align = "center")),

  # Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput(
selectInput("var", "1, Select the variables from top doc summary file", 
choices =c( "service_total" = 1, 
              "ben_total" = 2,
              "payment" = 3, 
              "charged" = 4, 
              "allowed" = 5, 
              "unique_services_per_patient" = 6, 
              "duplicates_per_service" = 7, 
              "services_per_patient" = 8), selected= 1 ),
        br(),
        sliderInput("bins", "2, Select the number of BINs for histogram", min = 5, max = 40, value=20),
        br(),
        radioButtons("color", "3, Select the color of histogram", choices =c("Green", "Red", "Yellow"), selected= "Green")

    )),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("myhist")
    )
  ))
)

server.R

`library(ggplot2)
library(shiny)
options(shiny.error=browser)

load("/******/top_docs.RData", envir=.GlobalEnv)
shinyServer(function(input, output) {

  output$myhist <- renderPlot({

    # generate var based on input$var from ui.R
    col <- as.numeric(input$var)
    hist(top_docs[,col], breaks = seq(0, max(top_docs[,col], l = input$bins+1), col=input$color, main="Histogram of Top docs", xlab=names(top_docs[col])))

  })

})
`

Found it... All the sidebarPanel content was inside a sliderInput function that gives error

top_docs = data.frame( service_total = sample(1:100000, 40, replace=T),
                       ben_total = sample(1:100000, 40, replace=T)
                       , payment = sample(1:100000, 40, replace=T), charged = sample(1:100000, 40, replace=T)
                       , allowed = sample(1:100000, 40, replace=T), unique_services_per_patient = runif(40, 1, 5.2)
                       , duplicates_per_service = runif(40, 1.1, 16.2), services_per_patient = runif(40, 1.3, 70) )

# shiny plots on top_docs data
library(shiny)
ui <- fluidPage(
  # Header title
  titlePanel(title = h4("Top doctors plots - a histograms", align = "center")),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      # sliderInput(            < -------------  HERE
        selectInput("var", "1, Select the variables from top doc summary file", 
                    choices =c( "service_total" = 1, 
                                "ben_total" = 2,
                                "payment" = 3, 
                                "charged" = 4, 
                                "allowed" = 5, 
                                "unique_services_per_patient" = 6, 
                                "duplicates_per_service" = 7, 
                                "services_per_patient" = 8), selected= 1 ),
        br(),
        sliderInput("bins", "2, Select the number of BINs for histogram", min = 5, max = 40, value=20),
        br(),
        radioButtons("color", "3, Select the color of histogram", choices =c("Green", "Red", "Yellow"), selected= "Green")

      # )            < -------------  HERE
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("myhist")
    )
  ))

server <- shinyServer(function(input, output) {

  output$myhist <- renderPlot({

    # generate var based on input$var from ui.R
    col <- as.numeric(input$var)
    hist(top_docs[,col], breaks = seq(0, max(top_docs[,col]), l = input$bins+1)
                                      , col=input$color, main="Histogram of Top docs", xlab=names(top_docs[col]))

  })

})

shinyApp(ui, server)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM