P Initiate
P Initiate

Reputation: 79

Reactive app help in Shiny

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")

Upvotes: 0

Views: 38

Answers (1)

St&#233;phane Laurent
St&#233;phane Laurent

Reputation: 84529

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

Upvotes: 1

Related Questions