0
votes
library(shiny)
ui <- fluidPage(

# Application title
titlePanel("Linear model DARP"),
sidebarLayout(
sidebarPanel(
  selectInput('ycol', 'Select a resonse variable', names(df_ln)[c(12,13,14)],
              selected=names(df_ln)[[1]]),
  sliderInput(inputId = "area",
              "select the service region area(km^2):",
              min= 170,
              max= 8000,
              value=1001),
  sliderInput(inputId = "crit..peak",
              label="Choose Peak demand(Requests):",
              min=10,
              max=150,
              value=40),
  sliderInput(inputId ="Speed",
              label = "Please selct you average Speed(mph):",
              min=10,
              max=50,
              value = 15)
),


mainPanel(
  tableOutput("table"),
  h5('The data shows the fleetsize required for your selection of input variables')
   )
  )
)
 df_ln<-read.csv("F:/Project/Programme/ML/DAR Machine Learning TR Part 
 A/train_darp_ln.csv")
 server <- function(input, output) {

  output$table <- reactive({
renderTable({

Linearmodel_DARP<-lm(input$ycol~area+crit..peak+speed,data = df_ln)
new_demand<-data.frame(area=input$area,crit..peak=input$crit..peak,speed=input$Speed)

fleetsize<-predict(Linearmodel_DARP,newdata=new_demand)
round(exp(fleetsize),0)

    })
     })

         }

        # Run the application 
        shinyApp(ui = ui, server = server)

Please help me to apply reactively the linear model and predict the new response variable The prediction of the ycol data selected from sidebar should be shown on the render table And in my app I am not getting anything I am not getting any error but the predicted data as per the selection is not shown in the app

dput(head(df_ln))
structure(list(area = c(2217.7, 6537.4, 1705.5, 5634, 1260.5, 
4797.7), density = c(0.13753, 0.016826, 0.18469, 0.021477, 0.25862, 
0.027305), crit..CV = c(0.63954, 0.81437, 0.49909, 0.33935, 0.39148, 
0.17489), crit..peak = c(49L, 26L, 41L, 20L, 39L, 18L), TW = c(21L, 
47L, 54L, 48L, 17L, 41L), L = c(569L, 576L, 391L, 390L, 458L, 
392L), s = c(7L, 3L, 3L, 6L, 3L, 2L), speed = c(18L, 26L, 20L, 
30L, 24L, 33L), circuity = c(1.3284, 1.1494, 1.4597, 1.2725, 
1.0486, 1.0792), cap = c(9L, 9L, 5L, 8L, 5L, 7L), mrt = c(1.5452, 
2.3743, 1.5962, 2.6065, 2.1278, 2.6228), veh = c(4.605170186, 
3.433987204, 4.718498871, 3.951243719, 4.060443011, 3.526360525
), veh.hrs = c(6.665569062, 5.523778231, 6.496186582, 5.71857256, 
5.816843267, 5.256713817), veh.km = c(9.555940819, 8.781874769, 
9.491918855, 9.119769942, 8.994897097, 8.753221378)), row.names = c(NA, 
6L), class = "data.frame")
1
Plese provide the output of dput(df_ln) so that we can try with your data. Or dput(head(df_ln)) if it's enough. - Stéphane Laurent
added the dput(head(df_ln)) - P Initiate

1 Answers

1
votes

There are at least two errors:

  • output$table <- reactive({renderTable...... -> remove the reactive.

  • in lm(input$ycol~....., the input$ycol is a character string, that cannot work; replace with lm(df_ln[[input$ycol]] ~ ....

After doing these two modifications, I get the following app. Is it what you want?

enter image description here